springioc

在开源软件中常常使用relativePath解决依赖顺序问题

beanFactory applicationContext区别

beanFactory一个基本ioc容器, applicationContext在其基础上提供了更多的功能

applicaitonContext 继承beanFatory, 但是applicaiotnContext是通过组合了一个beanFactory(DefaultListableBeanFactory) 的方式使用beanFactory的基础功能的

ApplicationContext组装了一个BeanFactory的实现,并且增加了AOP等功能特性

BeanFactory 是 Bean 容器,它不提供企业特性,比如 AOP、事务以及 事件等,这些都被 ApplicationContext 支持。

ApplicationContext 才区分 XML 和注解,BeanFactory 通常只管理 BeanDefinition 和其 Bean 实例。

Spring Boot 2.0 深度实践之核心技术篇-慕课网实战  springmvc springboot 资料

 

 Spring中Bean的初始化方式有哪些?

● 构造器方式初始化

● 静态工厂方法初始化 ○ 比如XML中bean标签的factory-method属性指定静态工厂方法

● 工厂方法方式初始化 ○ 比如定义一个UserFactory类和内部的一个createUser()非静态方法;然后在XML中定义一个bean标签并指定其属性factory-bean和factory-method分别为前工厂的对应类和方法名。

● FactoryBean方式初始化 ○ 定义一个UserFactoryBean并实现FactoryBean接口并实现其getObject()方法和getObjectType()方法。然后直接再XML中定义bean标签其class属性就是UserFactoryBean全限定名称即可。

● JDK的ServiceLoader方式初始化(SPI) ○ 在classpath的META-INF/servives下创建一个文件,名称是某接口的全限定名称,文件无后缀。文件中直接写上接口实现类的全限定名。然后使用ServiceLoader相关的api即可实现接口实现类的实例化。

● ServiceLoaderFactoryBean获取ServiceLoader方式初始化,类似上一个。

● AutowireCapableBeanFactory的createBean(Class<?> class)方法初始化 ○ 注意class参数不能是接口或者抽象类,否则不能初始化

BeanFactoryPostProcessor和BeanPostProcessor

注意:BeanFactoryPostProcessor是在spring容器加载了bean的定义文件之后,在bean实例化之前执行的。接口方法的入参是ConfigurrableListableBeanFactory,使用该参数,可以获取到相关bean的定义信息,例子:

注意:BeanPostProcessor是在spring容器加载了bean的定义文件并且实例化bean之后执行的。BeanPostProcessor的执行顺序是在BeanFactoryPostProcessor之后。

Spring的BeanFactoryPostProcessor和BeanPostProcessor_江南好风景的博客-CSDN博客_beanpostprocessor和beanfactory

bean的生命周期

BeanDefinition的创建方式

1.通过xml或者properties资源来创建

2.通过@bean, @Configuration,@Component 等注解定义

3.通过api直接创建BeanDefinition(BeanDefinitionBuilder等api)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SpringApplicationContext 应用上下文生命周期

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值