SpringBoot对Spring的缺点进行的改善和优化。核心功能起步依赖本质上是一个Maven项目对象模型Project Object ModelPOM定义了对其他库的传递依赖这些东西加在一起即支持某项功能。、自动配置是一个运行时更准确地说是应用程序启动时的过程考虑了众多因素才决定Spring配置应该用哪个不该用哪个。该过程是Spring自动完成的。SpringBoot工程构建IDEA 中可以通过File-New-Project来快速构建 Spring Boot 工程。如下选择 Spring Initializr在 Project SDK 中选择导入的 jdk点击 Next到了项目的配置信息。标准的SpringBoot项目结构myproject/├── src/│ ├── main/│ │ ├── java/│ │ ├── resources/│ │ └── webapp/│ └── test/├── pom.xml└── README.md包结构组织java包中com.example.project/├── config/ // 配置类├── controller/ // 控制器├── service/ // 服务层│ ├── impl/ // 服务实现├── repository/ // 数据访问层或者是mapperdao├── model/ // 数据模型│ ├── entity/ // 实体类│ ├── dto/ // 数据传输对象└── util/ // 工具类标准启动类package com.example.project; SpringBootApplication public class Application { Bean public CommandLineRunner commandLineRunner(ApplicationContext ctx) { return args - { System.out.println(Application started!); }; } public static void main(String[] args) { SpringApplication.run(Application.class, args); } }配置文件结构resources/├── application.yml├── application-dev.yml├── application-prod.yml├── static/│ ├── css/│ ├── js/│ └── images/└── templates/└── pages/测试目录结构src/test/java/com/example/project/├── controller/│ └── UserControllerTest.java├── service/│ └── UserServiceTest.java└── repository/└── UserRepositoryTest.java自动装配原理基于Spring Framework 的条件化配置和EnableAutoConfiguration注解允许开发者在 项目中引入相关的依赖SpringBoot 将根据这些依赖自动配置应用程序的上下文和功能扫描外部引用 jar 包中的META-INF/spring.factories文件将文件中配置的类型信息加载到 Spring 容器。SpringBootApplication 注解1. Target({ElementType.TYPE}): 指定了这个注解可以用来标记在类上2. Retention(RetentionPolicy.RUNTIME):生命周期即在运行时保留3. Documented: 这个注解应该被包含在 Java 文档中4. Inherited: 这个注解指示一个被标注的类型是被继承的5. SpringBootConfiguration: Spring Boot 配置类6. EnableAutoConfiguration: Spring Boot 自动装配的核心启用自动配置机制根据 项目的依赖和配置自动配置应用程序的上下文7. ComponentScan: 配置组件扫描的规则启动器starter)1. spring-boot-starter-webSpring MVC和Tomcat嵌入式服务器用于快速构建Web应用程序2. spring-boot-starter-security快速实现应用的安全性包括认证和授权功能3. mybatis-spring-boot-starter简化在Spring Boot应用中集成MyBatis的过程4. spring-boot-starter-data-redis用于集成Redis缓存和数据存储服务5. spring-boot-starter-test包含了单元测试和集成测试所需的库如JUnit, Spring Test, AssertJ 等便于进行测试驱动开发(TDD)自定义starter例如自定义mybatis的starter1.创建dmybatis-spring-boot-autoconfigure模块普通maven工程提供自动配置创建一个MyBatisAutoConfig自动配置类功能并在resource资源包下自定义META-INF/spring/xxx.imports2.创建dmybatis-spring-boot-starter模块在其中得pom.xml文件中引入相应得依赖包括上面的模块依赖。