装配bean,基于xml

一、bean的实例化方式

1.默认构造

  <bean id="" class=""></bean> 必须提供默认构造方法

2.静态工厂

  用于生产实例对象,所有的方法必须都是静态的

  常用于spring整合其他框架(工具)

<bean id="" class="工厂实现类" factory-method="静态方法"></bean>

3.实例工厂

   必须先有实例对象,通过实例对象创建对象。所有的方法都是实例方法。

二、Bean的种类

1.普通bean:<bean id="" class=""></bean>

2.FactoryBean:是一个特殊的bean,具有工厂生产对象能力,只能生产特定的bean。

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

<bean id="" class="FB"></bean>

FB fb = new FB();

return fb.getObject();

三、作用域

 

<bean id="userService" class="scope.UserServiceImp" scope="singleton"></bean>
<bean id="userService" class="scope.UserServiceImp" scope="prototype"></bean>

 四、生命周期

 

1.初始化和销毁

  构造目标对象前后,将进行初始化和销毁

<bean id="" class="" init-method="初始化方法名" destroy-method="销毁方法名">

2.BeanPostProcessor后处理Bean(构造Bean前后执行的方法,生成代理对象,本质是bean的装饰器)->AOP的底层

  spring提供一种机制,只要将实现BeanPostProcessor接口并且实现postProcessAfterInitialization(Object Bean,String BeanName)【返回代理对象】和postProcessBeforeInitialization()方法的类提供给spring容器,spring将自动执行这两个方法。执行初始化方法前

执行before方法,初始化后执行after方法。

  Factory hook (钩子)that allows for custom modification of new bean instances, e.g. checking for marker interfaces or wrapping them with proxies. ->工厂钩子允许用户修改bean实例,例如,检查实现接口或者用装饰者的方式生成代理。

   A a = new A();

  a = B.before(a);

  a.init();

  a = B.after(a)

  a.addUser(); //目标是在目标方法前后执行(例如事务,性能监控)

  a.destory();

原文地址:https://www.cnblogs.com/zhuxiang1633/p/8485961.html