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 放在根包以及子包中就会被扫描到