JAVAEE2

Springboot
简化Spring应用开发的一个框架;
整个Spring技术栈的一个大整合;
J2EE开发的一站式解决方案;
springboot参数配置默认加载顺序
JAVAEE2_第1张图片

Springboot自动配置原理
Spring Boot启动的时候会通过@EnableAutoConfiguration注解扫描所有jar包类路径下META-INF/spring.factories配置文件中的所有自动配置类,并对其进行加载,而这些自动配置类都是以AutoConfiguration结尾来命名的,它实际上就是一个JavaConfig形式的Spring容器配置类,它能通过以Properties结尾命名的类中取得在全局配置文件中配置的属性如:server.port,而XxxxProperties类是通过@ConfigurationProperties注解与全局配置文件中对应的属性进行绑定的。
@Autowired
首先它会根据类型找到对应的 Bean,如果对应类型的 Bean 不是唯一的,那么它会根据其属性名称和 Bean 的名称进行匹配。如果匹配得上,就会使用该 Bean :如果还无法匹配,就会抛出异常。
消除歧义性一一@Primary 和@Quelifier
@Primary 含义告诉IoC容器,当发现有多个同样类型的Bean时,优先使用该组件进行注入;有时候@Primary可以使用在多个类上,此时IoC容器还是无法区分采用哪个 Bean 的实例进行注入,它的配置项value需要一个字符串去定义,它与@Autowired组合使用,通过类型和名称一起找到Bean。
类似BeanFactory接口的下面这个方法:
T getBean(String name , Class requiredType) throws BeansException;
spring bean的生命周期:
1.资源定位,比如@ComponentScan所定义的扫描包
2.将Bean的定义保存到BeanDefiniton实例中
3.发布Bean定义,将它装载IOC容器中
4.Bean的初始化(实例化+依赖注入)
5.Bean生存期
6.Bean销毁
ComponentScan 中还有个配置项 lazyIinit ,只可以配 Boolean 值,且默认值为 false ,也就是默认不进行延迟初始化,在spring的IoC 容器初始化时就执行了实例化和依赖注入;设置为true时,我们取出Bean的时候才完成初始化和依赖注入。
读取配置文件
@Value("${database.name}");
@ConfigurationProperties(“database”) ;
@PropertySource(value={“classpath:jdbc.properties”},ignoreResourceNotFound=true)
条件装配bean
@Conditional
@Profile注解:多环境配置bean
@ImportResource:以引入对应的XML文件,用以加载 Bean
Spring的Bean的生命周期
流程节点都是针对单Bean 的,但是 BeanPostProcessor 是针对所有 Bean 的。
JAVAEE2_第2张图片
Spring的Bean容器都有哪些
SpringIOC容器是一个IOC Service Provider。提供了两种容器类型:BeanFactory和ApplicationContext。
BeanFactory是基础类型IOC容器。顾名思义,就是生产Bean的工厂。能够提供完整的IOC服务。没有特殊指定的话,其默认采用延迟初始化策略。只有当客户端对象需要访问容器中的某个受管对象的时候,才对该对象进行初始化和依赖注入操作。
ApplicationContext是在BeanFactory的基础上边构建的,是相对比较高级的容器的实现,除了拥有BeanFactory的所有支持,ApplicationContext还提供了其他的高级特性。例如事件发布、国际化信息支持等。ApplicationConte

你可能感兴趣的:(java)