工作中都是在已经搭建好的框架中进行开发,最近想要了解一下,作为小白记录一下在搭建的时候遇到的一些问题。基础的东西就不记录了,网上找一找就可以,主要记录下过程中遇到一些问题

一、pom文件中引入的依赖,相互之间版本有可能会不兼容,所以遇到解决不了的问题,可以考虑下依赖不兼容的问题。比如:

下面是我搭建过程中遇到的版本不兼容的问题。

  1. Spring Boot 版本:你使用的是 spring-boot-starter-parent 的 2.0.0.RELEASE 版本。这个版本相对较旧,可能与一些较新的依赖不兼容。

  2. MyBatis-Plus 版本:你使用的是 mybatis-plus-boot-starter 的 3.5.3 版本。这个版本相对较新,可能与 Spring Boot 2.0.0.RELEASE 不兼容。

  3. MySQL Connector 版本:你使用的是 mysql-connector-java 的 8.0.28 版本。这个版本相对较新,可能与 Spring Boot 2.0.0.RELEASE 不兼容。

  4. Lombok 版本:你使用的是 lombok 的 1.18.24 版本。这个版本相对较新,可能与 Spring Boot 2.0.0.RELEASE 不兼容。

  5. MyBatis Spring Boot Starter 版本:你使用的是 mybatis-spring-boot-starter 的 2.1.4 版本。这个版本相对较新,可能与 Spring Boot 2.0.0.RELEASE 不兼容。

基础依赖供大家参考

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>pro0925</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
    </parent>
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.5</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version> <!-- 明确指定版本 -->
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version> <!-- 明确指定版本 -->
        </dependency>



    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.yml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.yml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>
</project>

二、其次还有一个比较坑的是mybatis-plus相关的,项目启动的时候报错Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required“”这个方面的,我在找资料的时候。

1、给出的解决方案基本都是

1)看下配置文件中的数据库信息是否有问题

2)配置文件中的mybatis中的配置是否有问题

等等等,但这些都没有解决我的问题,我的问题究竟是什么,下面会提到。

2、然后给出了一个显式配置qlSessionFactory 或 SqlSessionTemplate的解决方案也确实有用。

1)添加两个配置类,其中的数据库连接信息和@MapperScan("com.ma.mapper")中的信息,按照你们自己的实际填写

package com.ma.config;

import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

@Configuration
public class DataSourceConfig {

    @Bean
    public DataSource dataSource() {
        return DataSourceBuilder.create()
                .url("jdbc:mysql://localhost:3306/myfeature?characterEncoding=utf-8&serverTimezone=Asia/Shanghai")
                .username("root")
                .password("123456")
                .driverClassName("com.mysql.cj.jdbc.Driver")
                .build();
    }
}
package com.ma.config;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;

@Configuration
@MapperScan("com.ma.mapper")
public class MyBatisConfig {

    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath:mapper/*.xml"));
        return sessionFactory.getObject();
    }
}

2)在启动类上也添加@MapperScan("com.ma.mapper"),这样就解决问题了。

3、但是那我配置文件岂不是没有用到,然后我就一直在查找解决办法,各种尝试。最终找到了原因,就是启动类上的一个注解的属性值导致的

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})

exclude 属性指定了两个要排除的自动配置类:

1)DataSourceAutoConfiguration.class:这个类是 Spring Boot 用于自动配置数据源的。如果你不希望 Spring Boot 自动配置数据源,可以通过排除这个类来禁用它。

2)HibernateJpaAutoConfiguration.class:这个类是 Spring Boot 用于自动配置 Hibernate JPA 的。如果你不希望 Spring Boot 自动配置 Hibernate JPA,可以通过排除这个类来禁用它。

4、把这个数据的属性值清空就解决问题了。

package com.ma;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;



@SpringBootApplication
public class lanuch {
    public static void main(String[] args) {
        SpringApplication.run(lanuch.class, args);
    }

}

完结撒花!!!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐