spring ioc---容器初始化bean的两种方式

版权声明:仅供学习交流使用 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();
	}
}

猜你喜欢

转载自blog.csdn.net/drxRose/article/details/84929414