1.静态工厂
特点:静态工厂中必须有静态方法.
调用逻辑:类名.静态方法
调用过程:
1). 编辑spring配置文件
<bean id="calendar1" class="com.jt.manage.factory.StaticFactory" factory-method="getInstance"/>
2). 编辑工厂模式代码
public class StaticFactory {
public static Calendar getInstance(){
//JDK原生提供了实例化方法.
return Calendar.getInstance();
}
}
3). 编辑测试类
@Test
public void testStaticFactory(){
//1.实例化spring容器
ApplicationContext app =
new ClassPathXmlApplicationContext("spring/factory.xml");
//2.获取对象
Calendar calendar = (Calendar) app.getBean("calendar1");
System.out.println("获取当前时间:"+calendar.getTime());
}
实例工厂
特点:首先实例化工厂,之后通过工厂对象调用工厂方法创建对象
调用特点:对象.方法
调用方法:
1). 编辑配置文件
<!--实例化工厂 -->
<bean id="instanceFactory" class="com.jt.manage.factory.InstanceFactory"/>
<bean id="calendar2" factory-bean="instanceFactory"
factory-method="getInstance"/>
2). 编辑工厂模式
public class InstanceFactory {
public Calendar getInstance(){
return Calendar.getInstance();
}
}
3). 测试类
@Test
public void testInstanceFacotory(){
//1.实例化spring容器
ApplicationContext app =
new ClassPathXmlApplicationContext("spring/factory.xml");
//2.获取对象
Calendar calendar = (Calendar) app.getBean("calendar2");
System.out.println("获取当前时间:"+calendar.getTime());
}
Srping工厂
特点:实现Spring中特定接口FactoryBean,容器内部自动调用
调用方法:
1). 编辑配置文件
<!--spring工厂 -->
<bean id="calendar3" class="com.jt.manage.factory.SpringFactory"/>
2). 编辑工厂模式
public class SpringFactory implements FactoryBean<Calendar>{
@Override
public Calendar getObject() throws Exception {
// TODO Auto-generated method stub
return Calendar.getInstance();
}
@Override
public Class<?> getObjectType() {
return Calendar.class; //该配置不能为空
}
//是否单例
@Override
public boolean isSingleton() {
// TODO Auto-generated method stub
return false;
}
}
3). 编辑测试类
@Test
public void testSpringFacotory(){
//1.实例化spring容器
ApplicationContext app =
new ClassPathXmlApplicationContext("spring/factory.xml");
//2.获取对象
Calendar calendar = (Calendar) app.getBean("calendar3");
System.out.println("获取当前时间:"+calendar.getTime());
}
实例化spring容器
xml配置用
ApplicationContext app = new ClassPathXmlApplicationContext(“spring/factory.xml”);
注解配置用
ApplicationContext app = new AnnotationConfigApplicationContext(“spring/factory.xml”);