有四种方式
1.构造器实例化(重点)
2.静态工厂方法实例化
3.实例工厂方法实例化
4.实现FactoryBean接口实例化(重点)
第一种方式(构造器实例化(重点))
(1)cat类
package first_constructor;
public class Cat {
//一个无参的构造器
public Cat() {
System.out.println("I am a cat constractor!!");
}
}
(2) 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">
<!-- 1.构造器实例化(无参构造器,最标志,使用最多) -->
<bean id = "cat" class ="first_constructor.Cat"/>
</bean>
(3) 测试
//测试类
@SpringJUnitConfig
public class Pub {
@Autowired
private Cat cat;
@Test
void testConstractor1() throws Exception {
System.out.println(cat);
}
}
第二种方式(静态工厂方法实例化)
(1) cat1 类
package second_static_factory;
public class Cat1 {
public Cat1() {
}
}
(2)cat1工厂类
package second_static_factory;
//Cat1的工厂
public class Cat1Factory {
public static Cat1 createInstance() {
Cat1 c1 = new Cat1();
return c1;
}
}
(3)在上面的xml配置文件中添加bean元数据
<!-- 2.静态工厂示例化,解决系统遗留问题 -->
<!-- 记得路径一定不要写成这样子second_static_factory/Cat1Factory.java,要不然会报找不到cat1错的 -->
<bean id = "cat1" class = "second_static_factory.Cat1Factory"
factory-method="createInstance"/>
(4) 在上面的测试类中添加以下代码
@Autowired
private Cat1 cat1;
void testConstractor1() throws Exception {
System.out.println(cat);
System.out.println(cat1);//添加
}
第三种方式(实例工厂方法实例化)
(1)cat2 类
package third_factory;
public class Cat2 {
}
(2)cat2factory类
package third_factory;
public class Cat2Factory {
public Cat2 createInstance() {
Cat2 cat2 = new Cat2();
return cat2;
}
}
(3)在上面的xml配置文件中添加bean元数据
<!-- 3.实例工厂方法实例化:解决系统遗留问题 -->
<!-- 先创建一个工厂对象,才可以引用里面的方法 -->
<bean id = "factory2" class ="third_factory.Cat2Factory"/>
<bean id = "cat2" factory-bean="factory2" factory-method="createInstance"/>
(4)在上面的测试类中添加以下代码
@Autowired
private Cat2 cat2;
@Test
void testConstractor1() throws Exception {
System.out.println(cat);
System.out.println(cat1);
System.out.println(cat2);//添加
}
第四种方式(实现FactoryBean接口实例化)
(1) cat3类
package fourth_factoryBean;
public class Cat3 {
}
(2) cat3factory类
package fourth_factoryBean;
import org.springframework.beans.factory.FactoryBean;
public class Cat3Factory implements FactoryBean<Cat3> {
@Override
public Cat3 getObject() throws Exception {
Cat3 cat3 = new Cat3();
return cat3;
}
@Override
public Class<?> getObjectType() {
return Cat3.class;
}
//从FactoryBean 中可以看出默认实单例模式的,
//你可以修改为多例的,覆盖原来的方法
// public boolean isSingleton() {
// return false;
// }
}
(3)在上面的xml配置文件中添加bean元数据
<!-- 4.实现FactoryBean接口实例化 :实例工厂的变种,如集成MyBatis框架使用-->
<bean id = "cat3" class = "fourth_factoryBean.Cat3Factory"/>
</beans>
(4)在上面的测试类中添加以下代码
@Autowired
private Cat3 cat3;
@Test
void testConstractor1() throws Exception {
System.out.println(cat);
System.out.println(cat1);
System.out.println(cat2);
System.out.println(cat3);//添加
}
网友评论