Spring实例化Bean的三种方式
来源:互联网 发布:网络语言黑洞什么意思 编辑:程序博客网 时间:2024/06/01 09:50
在Spring中有三种创建Bean的方式:
1、使用类构造器实例化
2、使用静态工厂方法实例化
3、使用实例工厂实例化
下边介绍下这三种实例化的步骤:
一、使用类构造器实例化
这是Spring的xml配置文件:
<bean id="personDao" class="cn.itcast.dao.impl.PersonDaoBean"></bean>
这是PersonDaoBean.java文件
public class PersonDaoBean implements PersonDao {@Overridepublic void add(){System.out.println("执行PersonDaoBean中的add()方法");}}这是SpringTest.java文件:
public void instanceSpring() {ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");PersonDao personDao = (PersonDao)ctx.getBean("personDao");personDao.add();}
程序的运行过程:
运行SpringTest.java文件,
首先通过实用的Bean工厂ApplicationContext获得beans.xml的路径,对单例的Bean进行实例化(关于Bean在何时实例化在随后的博文里边有)。
然后通过ctx.getBean("personDao")得到personDao这个Bean的实例对象(Object),由于得到的类型是Object的,所以需要转换下类型。
最后,通过PersonDao这个接口中的add()方法,打印出文字。
二、使用静态工厂实例化
首先是Beans.xml文件
<bean id="personService" class="cn.itcast.service.impl.PersonServiceBeanFactory" factory-method="createPersonServiceBean"></bean>然后是PersonServiceBeanFactory.java类
public class PersonServiceBeanFactory {public static PersonServiceBean createPersonServiceBean(){return new PersonServiceBean();}}还有就是PersonServiceBean.java类
public class PersonServiceBean implements PersonService {@Overridepublic void save(){System.out.println("我是save()方法");}}再有就是测试类SpringTest.java类
public void instanceSpring() {ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");PersonService personService = (PersonService)ctx.getBean("personService");personService.save();}我们来看一下SpringTest.java程序的运行过程
首先得到ApplicationContext对象,这个不多说。
然后,通过getBean()方法得到id="personService"的Bean。在这个过程中,会调用静态工厂PersonServiceBeanFactory的createPersonServiceBean方法,实例化出来一个PersonServiceBean类对象。
最后通过personService这个PersonService类对象调用save()方法。
三、使用实例工厂方法实例化Bean
首先我们看下配置文件beans.xml
<bean id="personServiceFactory" class="cn.itcast.service.impl.PersonServiceBeanFactory"></bean><bean id="personService" factory-bean="personServiceFactory" factory-method="createPersonServiceBean"></bean>然后是PersonServiceBeanFactory.java文件
public class PersonServiceBeanFactory {public PersonServiceBean createPersonServiceBean(){ //注意,这里相对于静态工厂少了个staticreturn new PersonServiceBean();}}PersonServiceBean.java类和上边的静态工厂方法介绍中的相同
public class PersonServiceBean implements PersonService {@Overridepublic void save(){System.out.println("我是save()方法");}}然后是测试类SpringTest.java
public void instanceSpring() {ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");PersonService personService = (PersonService)ctx.getBean("personService");personService.save();}
0 0
- spring实例bean的三种方式
- Spring的三种实例化Bean的方式
- Spring的三种实例化Bean的方式
- Spring的三种实例化Bean的方式
- Spring的三种实例化Bean的方式
- spring的三种实例化bean的方式
- Spring的三种实例化Bean的方式
- Spring实例化bean的三种方式
- spring实例化bean的三种方式
- Spring 三种实例化bean的方式
- Spring三种实例化Bean的方式
- Spring中实例化Bean的三种方式
- spring三种实例化bean的方式
- spring实例化bean的三种方式
- spring实例化bean的三种方式
- Spring三种实例化Bean的方式
- spring三种实例化bean的方式
- Spring IoC容器实例化bean的三种方式
- 实时错误‘364’ 对象已卸载
- VMware下Linux以NAT方式上网
- 改变从github开始吧
- Hibernate4.3.5 双向一对多示例
- 花心雨的世界
- Spring实例化Bean的三种方式
- redis数据结构
- 1058. A+B in Hogwarts (20)
- 关于strtok的一点简单认识
- Codeforces 453A Little Pony and Expected Maximum 概率期望
- Linux Shortcut Key
- [DFS][toj1009Sticks]
- [编程之美] PSet2.11 寻找最近点对
- 并查集及并查集的路径压缩