发表于: 2017-04-26 16:35:34
1 1532
昨天完成的事情:
一、配置spring管理bean的作用域:
之前已经学会了将bean交给spring管理,那么我们每次调用getbean方法,从容器中获取到的bean是否是同一个?
是同一个对象。默认情况下,bean的作用域范围是Singleton,即每个spring IOC容器中一个bean定义只有做一个对象实例,默认情况下会在容器启动时初始化bean;
而在prototype作用域下,每次调用会返回一个新的对象;
<bean id="personService" class="service.PersonServiceBean" scope="prototype"></bean>
scope="prototype" scope="singleton"
二、bean在何时进行实例化?
Singleton:在容器实例化时就会对bean进行实例化;
Prototype:调用bean方法时进行实例化。
除此,还了解了初始化及关闭(ctx.close())的一些知识。
三、Spring依赖注入的原理:
1.新建类PersonDaoBean,并将接口抽取,目标是将PersonDaoBean对象注入到PersonServiceBean中;
PersonDaoBean是这样定义的:
package dao;
import impls.PersonDao;
public class PersonDaoBean implements PersonDao {
public void add() {
System.out.println("执行PersonDaoBean中的add方法");
}
}
PersonServiceBean是这样定义的:
package service;
import impls.PersonDao;
import impls.PersonService;
public class PersonServiceBean implements PersonService {
//属性为PersonDao类对象
private PersonDao personDao;
public PersonDao getPersonDao() {
return personDao;
}
//一定要为该属性提供的set方法
public void setPersonDao(PersonDao personDao) {
this.personDao = personDao;
}
//重写接口中的save方法
public void save(){
personDao.add();
}
}
通常依赖注入有两种方法:
1.通过构造器参数,让容器将创建好的依赖对象注入PersonServiceBean;
2.通过setter方法注入;
这里我采用setter方法;
最后,需要在bean.xml中做相关配置:
<!-- 类的构造器实例化 -->
<bean id="personDao" class="dao.PersonDaoBean"></bean>
<bean id="personService" class="service.PersonServiceBean" >
<property name="personDao" ref="personDao"></property>
</bean>
这里ref后面的值是指要注入的bean的名称。
测试时,若注入成功,则会出现“执行PersonDaoBean中的add方法”。
评论