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实例的几种方式的主要内容,如果未能解决你的问题,请参考以下文章