目次
1.设置优先级
2.Bean
3.SpringBoot原理
1.设置优先级
SpringBoot中支持三种格式的设置文件: .application.properties、application.yml和application. yaml。它们的设置优先级分别低落。固然springboot支持多种格式设置文件,但是在项目开发时,保举同一使用一种格式的设置(现在yml是主流)
别的,SpringBoot除了支持设置文件属性设置,还支持Java体系属性和下令行参数的方式举行属性设置。优先级:下令行参数>Java体系属性>其他三种设置文件。
2.Bean
获取Bean:
Bean的作用域:
Spring支持五种作用域,后三种在web情况才见效:单例是指,不管用何种方法怎样调用Bean中的对象,始终都调用的是同一个对象。可以通过@Scope注解来举行设置作用域
- 默认singleton的bean,在容器启动时被创建,可以使用@Lazy注解来延长初始化(延长到第一次使用时)
- prototype的bean,每一次使用该bean的时间都会创建一个新的实例
- 现实开发当中,绝大部门的Bean是单例的,也就是说绝大部门Bean不须要设置scope属性
第三方Bean:
当我们引入依赖后,也想把依赖中的对象也交给IOC容器管理,就不能使用@Component注解了,由于引入的这些依赖是只读的,不可编辑。
假如要管理的bean对象来自于第三方(不是自界说的) ,是无法用@Component及衍生注解声明bean的,就须要用到@Bean注解。加上后,spring容器启动时就会自动调用此方法,将方法的返回值声明为Bean对象。
3.SpringBoot原理
springboot快捷方便的缘故原由是提供了两个非常关键的功能:起步依赖(依赖转达)、自动设置
自动设置:
SpringBoot的自动设置就是当spring容器启动后,一些设置类、bean对象就自动存入到了IOC容器中,不须要我们手动去声明,从而简化了开发,省去了繁琐的设置使用。
当我们引入第三方依赖时,Springboot并不能扫描到这些依赖包,因此无法把对象给到IOC容器中。此时我们可以使用注解ComponentScan指定扫描的包,但是假如项目大了,要扫描的包就会变多,如许使用繁琐且性能低。
通常情况下,我们都接纳和Springboot雷同的引入方式,纵然用@EnableXxxx注解
以上就是引入第三方依赖之后,加载第三方依赖中的Bean和设置类的方法。
源码分析:
springboot的启动类(也称为引导类)有一个固定的注解,这个注解是spring框架中最告急的注解,因此我们下面分析这个注解里有什么
内里有前四个元注解(修饰注解的注解,不消管)、声明设置类注解Spri.....Configuration、自动设置核心注解EnableAuto....、和包扫描注解Com...Scan。EnableAuto..就是上面封装了Import注解的注解。
引入了继续于ImportSelector的实现类,如下
实现了父类的selectImports方法,返回值封装了须要交给IOC容器管理的全类名。
这些须要引入的全类名通常在起步依赖时都有,如下:这些都是自动设置类,都会被selectImports方法读取举行返回。因此纵然我们没有设置bean对象,也可以将这些全类名中的bean对象举行注入使用
点进去这些设置类,内里现实上就是一个个的方法,这些方法的返回值再通过@Bean注解加载到IOC容器中,以是这个Bean对象在Spring启动的时间就自动有了。这就是自动设置的原理。
Conditional注解:
这些全类名中的对象,并不都会通过Bean注解交给IOC容器管理。第二个注解@Conditional...,就是按照条件装配,只有满足条件的对象才会成为Bean对象。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |