发表于: 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方法”。 


 

 

   



返回列表 返回列表
评论

    分享到