spring学习之---创建Bean的三种方式
2017-07-21 21:15
405 查看
1.使用构造器创建Bean实例
如果不采用构造注入,spring底层会调用Bean类的无参构造器来创建实例,因此要求该Bean提供无参构造器,在这种情况下,class元素时必需的,class属性的值就是Bean实例的实现类,spring对Bean实例的所有属性执行默认初始化,即所有基本类型的值初始化为0或false;所有的引用类型的值初始化为null。接下来,BeanFactory会根据配置文件决定依赖关系,先实例化被依赖的Bean实例,然后为Bean注入依赖关系,最后将一个完整的Bean实例返回给程序。
如果采用构造注入,spring容器将使用带对应参数的构造器来创建Bean实例,spring调用构造器传入的参数即可用于初始化Bean的实例变量,最后也将一个完整的Bean实例返回给程序。
2.使用静态工厂方法创建Bean
使用静态工厂方法创建Bean实例时,class属性也必须指定,但此时class属性并不是Bean实例的实现类,而是静态工厂类,spring通过该属性知道由哪个工厂类来创建Bean实例。还需要使用factory-method属性来指定静态工厂方法。如果静态工厂方法需要参数,则使用
<constructor-arg.../>元素传入。
public class Dog{ private String msg; setter方法 public void testBeing(){ System.out.println(msg + "狗爱吃肉"); } } public class Being Factory{ public static Being getBeing(){ return new Dog(); } } <bean id="dog" class="...BeingFactory" factory-method="getBeing"> <property name="msg" value="小狗狗"/> </bean>
使用静态工厂方法创建实例时必须提供工厂类,工厂类包含产生实例的静态工厂方法。
3.调用实例工厂方法创建Bean
配置静态工厂方法使用class指定静态工厂类,而配置实例工厂方法则使用factory-bean指定工厂实例。使用实例工厂方法时,配置Bean实例的
<bean.../>元素无须class属性,因为spring容器不再直接实例化该Bean,spring容器仅仅调用实例工厂的工厂方法,工厂方法创建Bean实例。
public class American{ public String sayHello(String name){ return name + ",Hello"; } } public class PersonFactory{ public American getAmerican(){ return new American(); } } <bean id="personFactory" class="...PersonFactory"/> <bean id="american" factory-bean="personFactory" factory-method="getAmerican">
相关文章推荐
- 对三种方式创建和使用Spring容器的学习
- spring 创建bean的三种方式.
- Spring创建Bean的三种方式
- Spring(IOC) 对象创建三种方式、对象bean起别名
- Spring学习笔记——Spring实例化Bean的三种方式
- spring详解:bean的三种创建方式
- Spring学习(四)-Bean的三种装配方式
- spring创建bean的三种方式-通过构造器,通过静态工厂方法,通过实例工厂方法
- Spring创建Bean的三种方式
- spring在配置文件中bean对象创建的三种方式
- ITCAST视频-Spring学习笔记(Spring的三种实例化Bean的方式)
- Spring中bean工厂创建bean的三种方式
- spring学习教程7-spring容器创建bean对象的方式以及如何处理多个spring配置文件
- Spring学习(五)-----注入bean属性的三种方式( 1: 正常的方式 2: 快捷方式 3: “p” 模式)
- Spring学习笔记(二)Spring的三种实例化Bean的方式
- 创建Bean的三种方式 在大多数情况下,Spring容器直接通过new关键字调用构造器来创建Bean实例,而class属性指定Bean实例的实现类,但这不是实例化Bean的唯一方法。实际上,Sprin
- Spring管理Bean的三种创建方式
- Spring-6.创建bean的三种方式
- Spring管理Bean的三种创建方式
- 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】