bean标签的配置方式
1)最基本的bean标签【无参构造】
<!--
1.最基本的bean标签配置方式,默认使用无参构造创建对象
只要写了property标签,就一定是调用了属性的set方法来进行赋值
-->
<bean id="person" class="cn.itsource.test.Person">
<property name="name" value="张三丰"/>
<property name="age" value="22"/>
</bean
2)静态工厂
public class StaticFactory {
//静态方法
public static Person createPerson(){
Person person = new Person();
person.setAge(23);
person.setName("张无忌");
return person;
}}
<!--
2.静态工厂配置方式
因为StaticFactory类中的方法是静态方法,所以不需要创建这个工厂类的对象,就可以直
接使用 类名称.方法名称 去调用;
factory-method 就是指定静态工厂类中的静态方法名称,注意此方法必须是无参数的。
-->
<bean id="factory" class="cn.itsource.test.static_factory.StaticFactory"
factory-method="createPerson"/>
3)实例工厂
方法代码就是将static关键字去掉,变成一个成员方法
<!--
3.实例工厂配置方式
第一个bean标签是工厂bean
第二个bean才是创建Person对象的bean,通过factory-bean去指定工厂bean的id,
factory-method属性去指定方法名称
注意:第二个bean标签就千万不要写class属性了。
-->
<bean id="instanceFactory"
class="cn.itsource.test.InstanceFactory.InstanceFactory"/>
<bean id="person" factory-bean="instanceFactory" factorymethod="createPerson" />
4)FactoryBean方式
FactoryBean是Spring框架中的一个接口,专门用于其他框架与Spring框架集成的配置方式
框架厂商要与Spring集成的话,就必须自己去写一个实现类来实现Spring的这个接口(FactoryBean)
接口的好处:固定了方法名称getObject、参数列表。
方法实现FactoryBean
public class MyFactoryBean implements FactoryBean<Person> {
/**
* 创建对象的实现代码
* @return
* @throws Exception
*/
@Override
public Person getObject() throws Exception {
Person person = new Person();
person.setAge(23);
person.setName("张无忌");
return person;
}
//对象的类型
@Override
public Class<?> getObjectType() {
return Person.class;
}
//是否采用单例模式
@Override
public boolean isSingleton() {
return true;
}
}
<!--
4.FactoryBean方式
xml配置与第一种最基本的配置方式没有区别
-->
<bean id="person" class="cn.itsource.test.factoryBean.MyFactoryBean"/>
FactoryBean方式配置,本质就是将方法名称固定死了的实例工厂方式,变相的实例工厂。