什么是静态工厂?
工厂类所有方法都是静态的
/**
* 里面一般来说都是静态的方法
* @author memory_coder
* @2017年10月2日 上午10:05:31
*/
public class StaticBeanFactory {
public static User getUser()
{
return new UserImpl();
}
}
在Application.xml文件中的配置
<!-- class为静态工厂类的全限定类名 factory-method为使用的静态方法
<bean id="user" class="com.slxy.factory.StaticFactory" factory-method="getUser" ></bean>
什么是实例工厂?
工厂类的方法为静态方法
/**
* @author memory_coder
* @2017年10月3日 下午6:49:44
*/
public class InstantBeanFactory {
public User getUser()
{
return new UserImpl();
}
}
在Application.xml文件中的配置为
<?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 id="userFactory" class="com.slxy.factory.InstantBeanFactory" ></bean>
<!-- 配置工厂实例的对象 factory-bean为使用实例工厂的id属性值 factory-method为调用工厂的方法-->
<bean id="userId" factory-bean="userFactory" factory-method="createUserService"></bean>
</beans>
使用方法都一样
/**
* @author memory_coder
* @2017年10月3日 下午6:57:28
*/
public class InstantBeanFactoryText {
@Test
public void createUserService()
{
// 加载spring配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("InstantApplication.xml");
// 获得user实例对象
UserS us = context.getBean("userId",User.class);
us.addUser();
}
}