1、通过“无参构造方法”实例化Bean
代码如下:
<!-- 通过无参数构造方法实例化Bean-->
<bean id="user" class="edu.hrbu.spring.bean.User"/>
2、通过“静态工厂方法”实例化Bean
静态工厂方法不属于GoF23种设计模式之一。又叫作“简单工厂模式”
代码如下:
<!-- 通过静态工厂方法实例化Bean-->
<bean id="userStatic" class="edu.hrbu.spring.factory.UserFactory" factory-method="getUserByStaticFactory"/>
/**
* @author 徐登宇
*/
public class UserFactory {
private static final User user = new User();
public static User getUserByStaticFactory() {
return user;
}
}
注意:不需要创建 UserFactory工厂类 的对象,因为 getUserByStaticFactoryMethod方法 是静态的,只需要在Spring配置文件中,指定具体是哪个工厂来实例化User对象就可以。
3、通过“实例工厂方法”实例化Bean
实例工厂方法属于GoF23种设计模式之一。又叫作“工厂方法模式”
代码如下:
<!-- 通过实例工厂方法实例化Bean-->
<bean id="userFactory" class="edu.hrbu.spring.factory.UserFactory"/>
<bean id="userInstance" factory-bean="userFactory" factory-method="getUserByFactoryMethod"/>
/**
* @author 徐登宇
*/
public class UserFactory {
private static final User user = new User();
public User getUserByFactoryMethod() {
return user;
}
}
注意:需要创建 UserFactory工厂类的实例对象,因为需要该工厂的实例对象来调用getUserByFactoryMethod这个实例方法,从而实习User对象的实例化。
完整代码:
(1)配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 通过实例工厂方法实例化Bean-->
<bean id="userFactory" class="edu.hrbu.spring.factory.UserFactory"/>
<bean id="userInstance" factory-bean="userFactory" factory-method="getUserByFactoryMethod"/>
<!-- 通过静态工厂方法实例化Bean-->
<bean id="userStatic" class="edu.hrbu.spring.factory.UserFactory" factory-method="getUserByStaticFactory"/>
<!-- 通过无参数构造方法实例化Bean-->
<bean id="user" class="edu.hrbu.spring.bean.User"/>
</beans>
(2)工厂类:
/**
* @author 徐登宇
*/
public class UserFactory {
private static final User user = new User();
public static User getUserByStaticFactory() {
return user;
}
public User getUserByFactoryMethod() {
return user;
}
}
()