1. 使用IDEA内置Spring Initializr 生成SB项目
最上方Server URL可以选择借助哪个平台生成, 可选阿里云
作为对比 , 官方可选版本最旧为3.1.18 ; 阿里云可选最新版本为3.0.2
本次选择3.1.8版本, 并且添加Spring Web依赖(包括RESTful / Spring MVC/)和Lombok依赖
生成后端项目中结构如图:
help和mvn文件都可以删掉 , static目录存放静态资源 , templates目录存放视图文件
且生成的依赖如下:
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.8</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.sunsplanter</groupId>
<artifactId>Scaffolding_Test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Scaffolding_Test</name>
<description>Scaffolding_Test</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<image>
<builder>paketobuildpacks/builder-jammy-base:latest</builder>
</image>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
可以看到, starter-web依赖包括了starter , JSON , Tomcat , Web , Spring MVC
2 运行方式
2.1 IDEA 执行 main 方法
2.2 Maven 插件
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/02f870be5aaf48c4a7既可以通过点击run插件运行, 也可以在项目路径下执行mvn spring-boot:run即可运行
2.3 打包Jar方式运行
在lifecycle中用package命令打包, 会得到一个jar包.且由于Spring内置了Tomcat. 在jar包所在路径下执行 java -jar jar包名 , 即可启动项目
3 自动配置(注入)原理(TBD)
启用 autoconfigure(自动配置),框架会尝试猜测和 Bean 要使用的 Bean,从类路径中查找 xxx.jar,创建这个 jar中某些需要的 Bean。
例如使用 MyBatis 访问数据, 从我们项目的类路径中寻找 mybatis.jar, 进一步创建SqlSessionFactory, 还需要 DataSource 数据源对象,尝试连接数据。
这些工作交给 XXXAutoConfiguration 类,这些就是自动配置类。
在 spring-boot-autoconfigure-3.0.2.jar 定义了很多的 XXXAutoConfiguration 类。
第三方框架的starter 里面包含了自XXXAutoConfiguration第三方框架 MyBatis,mybatis-spring-boot-starter MyBatisAutoConfiguration 自动配置类.
- 自动配置的注解@EnableAutoConfiguration(通常由@SpringBootApplication 注解带入)
- 带有自动配置的注解@EnableAutoConfiguration(通常由@SpringBootApplication 注解带入)的包 Spring Boot 中的默认包.
- 默认包是扫描包的起点(根包)。@Controller ,@Service, @Repository ,@Component, @Configuration 放在根包以及子包中就会被扫描到