spring学习笔记(bean 容器)

开源的控制反转(Inversion of Control,Ioc)和面向切面(AOP)的容器框架
IOC(控制反转)

public class PersonServiceBean {
    private PersonDao personDao=new PersonDaoBean();
    public void save(Person person){
        personDao.save(person);
    } 
}

PersonDaoBean 是应用在内部创建及维护的。所谓控制反转就是应用本书不负责依赖对象的创建及维护,依赖对象的 创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转。

依赖注入(Dependency Injection )
1.使用构造器注入
2.使用属性setter方法注入
3.使用field 注入(用于注解方式)
注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自动装配会 产生未知情况,开发人员无法预见最终的装配结果。
1.手工装配依赖对象
2.自动装配依赖对象

当我们把依赖对象交给外部容器负责创建,那么personServicebean类可以改成如下:


public class PersonServiceBean {
    private PersonDao personDao;
    public PersonServiceBean(PersonDao personDao){
        this.personDao=personDao;
    }
//通过构造器参数,让容器把创建好的依赖对象注入进PersonServiceBean ,当然也可以用setter 方法进行注入。
    public  void save(Person person){
        personDao.save(person);
    }
}

所谓依赖注入就是指: 在运行旗舰,由外部容器动态的将依赖对象注入倒组件中。

使用spring 时,我们可以使用容器提供众多的服务。例如: 事物管理服务,消息服务等等。另外使用spring,我们也不需要处理复杂的事物传播行为。
容器提供单利模式支持,开发人员不需要自己编写实现代码。
容器提供了AOP技术。容易实现权限拦截、运行期监控等功能。
众多的辅佐类。
提供了集成支持。SSH .

这里写图片描述

这里写图片描述

    <bean id="personService" class="cn.itcast.service.impl.PersonServiceBean" />
    <bean id="personService2" class="cn.itcast.service.impl.PersonServiceBeanFactory"
        factory-method="createPersonServiceBean" />

    <bean id="personServiceFactory" class="cn.itcast.service.impl.PersonServiceBeanFactory"/>
    <bean id="personService3" factory-bean="personServiceFactory" factory-method="createPersonServiceBean2" />

Bean的作用域
singleton 
在每個Spring loC 容器中一個bean 定義衹有一個對象是咧,默認情況下會在容器啓動時初始化bean。但是可以在節點加入lazy-init="true" 來初始化bean,這時候,衹有第一次獲取bean 才會初始化bean.
如果想讓所有bean 都應用延遲初始化,可以在根節點beans設置default-init=true.
<beans default-lazy-init="true">
.prototype
每次從容器中獲取bean 都是新的對象。

request 
session 
global session 
集合可用以下集中
<property name="sets">
        <set>
            <value>第一个</value>
            <value>第二个</value>
            <value>第三个</value>
        </set>
    </property>

    <property name="lists">
        <list>
            <value> one list</value>
            <value> two lists</value>
            <value> three lists</value>
        </list>
    </property>

    <property name="properties">
         <props>
             <prop key="key1">value1</prop>
             <prop key="key2">value2</prop>
             <prop key="key3">value3</prop>
         </props>
    </property>
    <property name="maps">
        <map>
            <entry key="key-1" value="value-1"></entry>
            <entry key="key-2" value="value-2"> </entry>
            <entry key="key-3" value="value-3"></entry>
        </map>
    </property>


使用 构造器方式进行注入;

<bean id="personService" class="cn.itcast.service.impl.PersonServiceBean"
        lazy-init="false">
        <constructor-arg index="0" type="cn.itcast.dao.impl.PersonDao" ref="personDao"/>
        <constructor-arg index="1" value="呵呵呵呵"/>


        <!--<property name="personDao">
            <bean class="cn.itcast.dao.impl.PersonDaoBean"/>
        </property>-->

    </bean>

这里写图片描述

重点内容
这里写图片描述

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值