Created By Cofson in 2021-05-29 10:33:36
Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。
Spring Boot 主要有如下优点:独立运行和简化配置
@SpringBootApplication是启动类上的最重要的一个注解,我们点进去可以看到,她其实是三个注解的组合,也就是说使用者一个注解的作用相当于三个注解。
@SpringBootConfiguration 其实就是对原 @Configuration 注解的简单封装。
@Configuration是Spring 3.0时添加的一个注解,用来代替 applicationContext.xml 配置文件,所有这个配置文件里面能做到的事情都可以通过这个注解所在类来进行注册。@Configuration还有下面几个相关的注解,也可很重要。
@Bean
用来代替 XML 配置文件里面的bean配置
@ImportResource
如果有些通过类的注册方式配置不了的,可以通过这个注解引入额外的 XML 配置文件,有些老的配置文件无法通过 @Configuration 方式配置的非常管用
@Import
用来引入额外的一个或者多个 @Configuration 修饰的配置文件类
@ComponentScan主要用来开启组件扫描,可以自动扫描指定包路径下的@Component注解类并将bean实例注册到context中。
@ComponentScan是Spring 3.1时添加的一个注解,用来代替配置文件中的 component-scan 配置,并且可重复注解,即可以配置多个,用来配置注册不同的子包
@EnableAutoConfiguration主要用来提供自动装配,是这三个注解中最重要的一个注解。她是Spring Boot新添加的注解,提供了强大的自动依赖功能,是SpringBoot这么方便的大功臣。
自动装配原理
@EnableAutoConfiguration注解的关键在于引入了AutoConfigurationImportSelector,其核心逻辑为selectImports方法,逻辑大致如下:
参考阅读
SpringBoot之@EnableAutoConfiguration注解
代码分析@EnableAutoConfiguration注解
依赖管理是所有项目中至关重要的一部分。当一个项目变得相当复杂,管理依赖会成为一个噩梦,因为当中涉及太多 artifacts 了。这时候 SpringBoot starter 就派上用处了。每一个 stater 都在扮演着提供我们所需的 Spring 特性的一站式商店角色。其他所需的依赖以一致的方式注入并且被管理。所有的 starter 都归于 org.springframework.boot 组中,并且它们都以由 spring-boot-starter- 开头取名。
这种命名方式使得我们更容易找到 starter 依赖,特别是当我们使用那些支持通过名字查找依赖的 IDE 当中
目前,已经有超过50个 starter了,其中最常用的是
spring-boot-starter:核心 starter,包括自动化配置支持,日志以及 YAML
spring-boot-starter-aop:Spring AOP 和 AspectJ 相关的切面编程 starter
spring-boot-starter-data-jpa:使用 Hibernate Spring Data JPA 的 starter
spring-boot-starter-jdbc:使用 HikariCP 连接池 JDBC 的 starter
spring-boot-starter-security:使用 Spring Security 的 starter
spring-boot-starter-test:SpringBoot 测试相关的 starter
spring-boot-starter-web:构建 restful、springMVC 的 web应用程序的 starter
原文:https://www.cnblogs.com/cofson/p/14825260.html