SpringBoot项目搭建指南
github: https://github.com/chen-jiacheng/data-access-samples
一、SpringBoot项目搭建
1.1 SpringBoot 版本选择
Spring Boot 2.7.18 需要Java 8,并且兼容 Java 21(包括 Java 21)。 还需要Spring Framework 5.3.31或更高版本。
Spring Boot 3.5.0 至少需要Java 17,并且兼容 Java 24 及以上版本。 还需要Spring Framework 6.2.7或更高版本。
https://docs.spring.io/spring-boot/docs/2.7.18/reference/htmlsingle/#getting-started
1.2 SpringBoot 框架引入方式
https://docs.spring.io/spring-boot/docs/2.7.18/maven-plugin/reference/htmlsingle/
1.2.1 继承 Starter Parent POM
<!-- Inherit defaults from Spring Boot -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.18</version>
</parent>
1.2.2 不使用 Parent POM 来使用 Spring Boot
<dependencyManagement>
<dependencies>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.7.18</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.18</version>
</plugin>
</plugins>
</pluginManagement>
</build>
1.3 SpringBoot 打包插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
二、日志框架引入
https://docs.spring.io/spring-boot/docs/2.7.18/reference/htmlsingle/#spring-boot-starter-logging
2.1 引入SpringBoot管理的Slf4j+Log4j2
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
2.2 log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="TRACE" monitorInterval="30">
<Properties>
<Property name="PROJECT_NAME">spring-boot-samples</Property>
<Property name="LOG_PATH">./data/logs</Property>
<Property name="pattern">[%d{yyyy-MM-dd HH:mm:ss,SSS}] [%c{1.}::%M] [%t] [%p]: %m%n</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="${pattern}"/>
</Console>
<RollingFile name="RollingFile" fileName="${LOG_PATH}/${PROJECT_NAME}.log"
filePattern="${LOG_PATH}/${PROJECT_NAME}-%d{yyyy-MM-dd}-%i.log">
<PatternLayout pattern="${pattern}"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="100 MB"/>
</Policies>
<DefaultRolloverStrategy max="10">
<Delete basePath="${LOG_PATH}" maxDepth="10">
<IfLastModified age="30d"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<appender-ref ref="Console"/>
<appender-ref ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
2.3 application.properties
logging.config=classpath:log4j2.xml
三、数据库相关框架引入
3.1 数据库驱动
使用SpringBoot管理的就行
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
3.2 数据源
前置条件: JDK8
Druid Spring Boot Starter 用于帮助你在Spring Boot项目中轻松集成Druid数据库连接池和监控。 druid-spring-boot-starter 适用于Spring boot 2。 如果Spring boot版本 >= 3.0.0请使用 druid-spring-boot-3-starter。
https://github.com/alibaba/druid
https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
</dependency>
3.3 MyBatis
前置条件: JDK8
master : MyBatis 3.5, MyBatis-Spring 3.0, Java 17+ and Spring Boot 3.0-3.4
2.3.x : MyBatis 3.5, MyBatis-Spring 2.1, Java 8+ and Spring Boot 2.7
https://github.com/mybatis/spring-boot-starter
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.chenjiacheng.data.access.samples.dao.mapper.SampleUserMapper">
<select id="findAllUsers" resultMap="sampleUserResultMap">
</select>
<insert id="insertUser" parameterType="com.chenjiacheng.data.access.samples.dao.model.SampleUser">
</insert>
<delete id="deleteUser" parameterType="long">
</delete>
<update id="updateUser" parameterType="com.chenjiacheng.data.access.samples.dao.model.SampleUser">
</update>
</mapper>
3.4 数据库相关配置
## jdbc
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/data_access_samples_db
spring.datasource.username=root
spring.datasource.password=Yqywf,Rmhpy.1@
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
## driver
spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
## druid
spring.datasource.druid.validationQuery="select 1 from dual"
spring.datasource.druid.initialSize=10
spring.datasource.druid.maxActive=10
spring.datasource.druid.minIdle=10
spring.datasource.druid.maxWait=500
spring.datasource.druid.testWhileIdle=true
spring.datasource.druid.timeBetweenEvictionRunsMillis=15000
spring.datasource.druid.minEvictableIdleTimeMillis=30000
spring.datasource.druid.keepAlive=true
# mybatis
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.use-generated-keys=true
mybatis.mapper-locations=classpath*:mapper/*.xml
mybatis.type-aliases-package=com.chenjiacheng.webapp.plus.dao.model
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
四、其他解决方案
4.1 springboot多数据源
https://cloud.tencent.com.cn/developer/article/2416429?from=15425