SpringBoot
Springboot
依赖管理:
- 父项目依赖管理
- 开发starter场景启动器
- 无需关注版本号,自动版本仲裁
- 可以修改版本号(在当前项目里重写配置
)
自动配置
- 自动配好Tomcat
- 自动配好SpringMVC(引入SpringMVC全套组件,自动配置好springMVC常用组件)
- 自动配置好web常见功能
- 默认的包结构(主程序包及子包就能被默认扫描,如果需要扫描其他包,可以在主程序注解后加scanBasePackages=“包名”)
- 各种配置拥有默认值(默认配置最终都是映射到java类)
- 按需加载所有自动配置项
容器功能
xml配置的方式容器加入组件

@Configuration:
创建容器对象不用在xml进行配置,创建一个类并加上@Configuration就是配置类;

//默认是单例模式,不管创建多少对象都是同一个,配置类本身也是一个组件;proxyBeanMethods:代理bean的方法
@Configuration(proxyBeanMethods=true(默认创建的都是重容器里找))(false是方法调用不在容器里找直接创建)
public class MyConfig{
//方法名就是组件名,类名就是组件类型
@Bean
public User user01(){
return new User("","", );
}
}
//@Bean("user02"),组件名就是user02;
-
配置类组件之间无依赖关系用Lite模式(false)加容器启动过程减少判断
-
配置类组件之间有依赖关系使用Full(true默认)方法会被调用之前单实例组件会在容器里找;
![]()
@Import
给容器中导入一个组件。写在容器的组件类上,是一个class数组可以导入很多组件(调用导入组件的无参构造)

@Conditional

条件装配:满足Conditional指定的条件,则进行组件注入
@ImportResource

配置绑定:
@ConfigurationProperties(prefix="属性在配置文件中的前缀")+@Conmpent(加入容器当中)


@EnableConfigurationProperties(开启属性配置绑定功能,自动注册到容器中,在配置类中写)


自动配置原理
引导加载自动配置类
//@SpringBootApplication核心
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
-
@SpringBootConfiguration
- @Configuration代表当前是一个配置类
-
@ComponentScan指定扫描那些,Spring注解
-
@EnableAutoConfiguration
@AutoConfigurationPackage @Import({AutoConfigurationImportSelector.class}) public @interface EnableAutoConfiguration {}-
@AutoConfigurationPackage自动配置包
@Import({Registrar.class})//给容器导入一个组件 public @interface AutoConfigurationPackage {} //利用Registrar给容器导入一系列组件,将MainApplication所在包下的所有组件导入 -
@Import({AutoConfigurationImportSelector.class})
利用getAutoConfigurationEntry(AnnotationMetadata annotationMetadata),给容器批量导入组件 调用List<String> configurations = this.getCandidateConfigurations(annotationMetadata, attributes);获取到所有需要导入容器的配置类 利用工厂加载Map<String, List<String>> loadSpringFactories(ClassLoader classLoader);得到所有组件; 从META-INF/spring.factories位置加载一个文件。 默认扫描我们当前系统所有META-INF/spring.factories位置文件127个场景的所有自动配置启动后默认全部加载:XXXAutoConfiguration,按照条件装配规则(@Conditional),最终回按需配置。
-
-
Springboot先加载所有的自动配置类XXXAutoConfiguration
-
每个自动配置类按照条件进行生效,默认都会绑定知道你过的值在XXXProperties配置文件进行绑定
-
生效的配置文件就会给容器装配很多组件
-
只要容器中有这些组件相当于有了这些功能
-
定制配置:用户直接自己的@Bean替换底层的组件。
**XXXAutoConfiguration-->组件--->XXXProperties里面取值--->application.properties


浙公网安备 33010602011771号