版权声明:仅供学习交流使用 https://blog.csdn.net/drxRose/article/details/84929414
ioc即管理类对象的初始化,在初始化对象的时候,容器有两种可选的方式.
一般较为常用的是无参构造器的方式.
方式 | 说明 | 使用的标签或属性 |
构造器 | 无参构造器的方式 较为常用的方式 |
标签:bean |
工厂方法 | (了解) 静态工厂方法 实例工厂方法 |
标签:bean 属性: 1,factory-method(静态工厂方法) 2,factory-bean和factory-method(实例工厂方法) |
测试构造器方式的类对象
package siye;
public class BeanToConstructor
{
public BeanToConstructor()
{
}
}
测试工厂方法的类对象
package siye;
public class BeanToFactory
{
private BeanToFactory()
{
}
private static BeanToFactory obj = new BeanToFactory();
public static BeanToFactory getInstance()
{// 静态工厂方法
return obj;
}
public BeanToFactory getInstanceByObj()
{// 实例工厂方法
return new BeanToFactory();
}
}
xml配置文件,文件名`config.xml`
<!--1,默认的无参构造器初始化. -->
<!--容器常用的默认方式 -->
<bean id="obj0" class="siye.BeanToConstructor" />
<!--2.1,工厂方法之静态工厂方法 -->
<bean id="obj1" class="siye.BeanToFactory" factory-method="getInstance" />
<!--2.2,工厂方法之实例工厂方法 -->
<bean id="obj2" class="siye.BeanToFactory" factory-bean="obj1"
factory-method="getInstanceByObj" />
测试类
package siye;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class UnitTest
{
public static void main(String[] args)
{
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("classpath:/siye/config.xml");
// 构造器初始化bean
BeanToConstructor obj0 = context.getBean("obj0", BeanToConstructor.class);
System.out.println(obj0);
// 工厂方法初始化bean
BeanToFactory obj1 = context.getBean("obj1", BeanToFactory.class);
System.out.println(obj1);
BeanToFactory obj2 = context.getBean("obj2", BeanToFactory.class);
System.out.println(obj2);
// 关闭资源
context.close();
}
}