Spring构建bean实例的几种方式

Posted sihai_1991

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring构建bean实例的几种方式相关的知识,希望对你有一定的参考价值。

IOC容器中获取bean的实例的几种方式:
方式一(直接构建的方式获取bean实例):

1,在beans.xml文件中配置bean的名称及所对应的的实体类属性(beans.xml位于和测试类同一路径下)
<!-- 方式一:直接构建的方式 -->
<bean id="userDao1" class="cn.lsh.dao.UserDao"/>
2,新建UserDao类:
3,建立测试类:
public class TestApp 
	//从当前类所在的包名中加载beans.xml文件
	private ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml",getClass());
	
	@Test
	public void test()
		//获取bean的名称,返回实体对象
		UserDao userDao1 = (UserDao) ac.getBean("userDao1");
		System.out.println(userDao1);
		
	
控制台输出结果的为:cn.lsh.dao.UserDao@28ab54eb
说明获取bean的对象成功。

方式二:
1,在beans.xml文件中配置bean的名称及所对应的的实体类属性(beans.xml位于和测试类同一路径下)
<!-- 方式二:使用工厂创建bean实例class属性:工厂类的类名。factory-method属性:静态的工厂方法名。-->
	<bean id="userDao2" class="cn.itcast.b_beancreate.MyFactory" factory-method="createUserDao"></bean>
2,新建UserDao类:
3,新建MyFactory类:
public class MyFactory 
	//返回的是UserDao对象
	public static UserDao createUserDao()
		System.out.println("MyFactory执行createUserDao()");
		return new UserDao();
	
4,建立测试类:
public class TestApp 
	//从当前类所在的包名中加载beans.xml文件
	private ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml",getClass());
	
	@Test
	public void test()
		//获取bean的名称,返回实体对象
		UserDao userDao2 = (UserDao) ac.getBean("userDao2");
		System.out.println(userDao2);
		
	
控制台输出结果的为:MyFactory执行createUserDao()
cn.lsh.test1.UserDao@2f87c55c
说明获取bean的对象成功。

方式三:
1,在beans.xml文件中配置bean的名称及所对应的的实体类属性(beans.xml位于和测试类同一路径下)
<!-- 方式三:使用工厂创建bean实例
		factory-bean属性:工厂类的bean的类名。
		factory-method属性:非静态的工厂方法名。-->
	
	<bean id="factory" class="cn.lsh.test2.MyFactory"/>
	<bean id="userDao3" factory-bean="factory" factory-method="createUserDao"/>
2,新建UserDao类:
3,新建MyFactory类:
public class MyFactory 
	//返回的是UserDao对象
	public UserDao createUserDao()
		System.out.println("非静态,MyFactory执行createUserDao()");
		return new UserDao();
	
4,建立测试类:
public class TestApp
//从当前类所在的包名中加载beans.xml文件
	private ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml",getClass());
	
	@Test
	public void test()
		//获取bean的名称,返回实体对象
		UserDao userDao3 = (UserDao) ac.getBean("userDao3");
		System.out.println(userDao3);
		
	
控制台输出结果的为:非静态,MyFactory执行createUserDao()
cn.lsh.test2.UserDao@2f87c55c
说明获取bean的对象成功。

以上是关于Spring构建bean实例的几种方式的主要内容,如果未能解决你的问题,请参考以下文章

spring注入bean的几种方式

Spring 创建Bean的几种形式

Spring基础(imooc)

Spring-- Ioc 容器Bean实例化的几种场景

解释 Spring 支持的几种 bean 的作用域?

spring初识--bean的几种注册方式