Bean的实例化方式
B e a n 的 实 例 化 方 式 { 默 认 构 造 : < b e a n i d = " B o o k S e r v i c e I d " c l a s s = " ∼ . B o o k S e r v i c e I m p l " > 静 态 工 厂 : s t a t i c 修 饰 的 方 法 + 工 厂 模 式 实 例 工 厂 : 所 有 的 方 法 必 须 是 非 静 态 的 Bean\mathrm{的实例化方式}\left\{\begin{array}{l}\mathrm{默认构造}:<bean\;id="BookServiceId"\;class="\;\sim.BookServiceImpl">\\\mathrm{静态工厂}:static修饰的方法+工厂模式\mathrm{}\\\mathrm{实例工厂}:\mathrm{所有的方法必须是非静态的}\end{array}\right. Bean的实例化方式⎩⎨⎧默认构造:<beanid="BookServiceId"class="∼.BookServiceImpl">静态工厂:static修饰的方法+工厂模式实例工厂:所有的方法必须是非静态的
静态工厂:常用于Spring去整合其他框架或工具
<bean id="UserServiceId" class="工厂的全限定类名(包名+类名)" factory-method="静态的生产方法"></bean>
实例工厂:必须先有工厂实例,通过工厂实例创建对象
<bean id="MyBeanFactoryId" class="~.BookServiceFactory"></bean>
<bean id="UserServiceId" factory-bean="MyBeanFactoryId" factory-method="creatrService"></bean>
Bean的种类
1.普通Bean
2.FactoryBean
FactoryBean:一种特殊的Bean,具有工厂生产对象的能力,只能生成特定的对象,bean必须使用FactoryBean接口,此接口提供getObject()方法用于获取特定的Bean
<bean id="" class="FB"></bean>
先创建FB实例,使用getObject()方法,并返回方法的返回值
FB fb=new FB();
return fb.getObject();
BeanFactory和FactoryBean对比
BeanFactory 工厂用于生成任意bean
FactoryBean 特殊的bean,用于生成另一个特定的bean例如:ProxyFactoryBean,此工厂bean用于生产代理,bean id="" class="ProxyFactoryBean"可获得代理对象实例,AOP使用