Spring 学习之三 bean 使用注解 种类 作用域

一、Bean种类

 1.1 普通bean:之前操作的都是普通bean <bean id ="" class=""/> ,spring直接创建实例,并返回

 1.2 FactoryBean:是一个特殊的bean,具有工厂生成对象能力,只能生成特定的对象

  bean必须使用FactoryBean接口,此接口提供方法getObject(),用于获得特定bean

 <bean id="" class="FB"/> 先创建FB实例,使用调用getObject()方法,并返回方法的返回值

  FB fb = new FB();

  return fb.getObject();

1.3 BeanFactory 和 FactoryBean 对比

 BeanFactory:工厂用于生成任意bean

 FactoryBean: 特殊bean,用于生成另一个特定的bean;例如:ProxyFactoryBean,此工厂bean用于生产代理

 <bean id = "" class="....ProxyFactoryBean"/> 获得代理对象实例。AOP使用


二、作用域:用于确定Spring创建bean实例个数


 取值:

  singleton 单例,默认值

  prototype 多例,每执行一次getBean将获得一个实例,例如:struts整合spring,配置action多例

 配置方法

  <bean id ="" class="" scope="prototype" >

  </bean>

三、生命周期

 3.1 初始化和销毁

 

  applicationContext配置文件

 

 3.2 BeanPostProcessor 后处理Bean

  BeanPostProcessor: spring提供一种机制,只要实现此接口BeanPostProcessor,并将实现类提供给spring容器,spring容器将自动执行,在初始化方法前执行

before(),在初始化方法后执行after()

  spring 提供工厂钩子,用于修改实例对象,可以生成代理对象,是AOP低层

   模拟:

   A a =new A();

   a = B.before(a) --> a的实例对象传递给后处理bean,可以生成代理对象并返回。

   a.init();

   a = B.after(a);、

   a.addUser(); //生成代理对象,目的在目标方法前后执行(例如:开启事务、提交事务

   a.destroy()

案例:


applicationContext配置文件


 注意:注册的后处理bean是作用所有bean,如果想要作用一个bean 可以使用 MybeanPostProcessor方法

postProcessAfterInitialization(final Object bean, String beanName) 利用参数2 beanName进行判断是否需要生成动态代理


 





   


  




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

memory_cood

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值