Spring_依赖注入

1,概述:
依赖注入(DI,Dependency Injection)也称为控制反转(IoC,Inversion of Control),是指程序运行过程中,若需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部的注入.依赖注入是目前最优秀的解耦方式。依赖注入让Spring的Bean之间以配置文件的方式组织在一起,而不是以硬编码的方式耦合在一起的。
2,注入方式:
依赖注入根据注入方式的不同,可分为两类:
(1)设值注入    
(2)构造注入
3,设值注入:
设值注入是指,通过setter方法传入被调用者的实例。这种注入方式简单、直观,因而在Spring的依赖注入中大量使用。
配置文件解析:
<bean id="zhangsan" class= "di01_1.Person" >
	<property name="name" value="张三" />
	<property name="tool" ref="axe" />
</bean>
<bean id="axe" class="di01_1.Tool" >
	<property name="name" value="斧子" />
        <property name= "function" value= "砍柴" />
</bean>

ref:当指定bean的某属性值为另一bean的实例时,通过ref指定它们间的参考关系。ref的值必须为某bean的id值。
4,构造注入:
构造注入是指,在构造调用者实例的同时,完成被调用者的实例化。即,使用构造器设置依赖关系。
配置文件解析:
<bean id="zhangsan" class= "di01_2.Person" >
	<constructor-arg index=“0” value="张三"/>
	<constructor-arg index=“1” ref="axe" />
</bean>
<bean id="axe" class="di01_2.Tool" >
	<property name="name" value="斧子" />
	<property name= "function" value= "砍柴" />
</bean>
5,<constructor-arg />:当使用构造注入时,代码的构造器中每个参数对应一个该元素。
index:指明该参数对应着构造器的第几个参数,从0开始,并要写为字符串形式的数字。不过,该属性不要也行,但要注意,若参数类型相同,或之间有包含关系,则需要保证赋值顺序要与构造器中的参数顺序一致。
value:当参数的值为一个普通类型的值,并由配置文件给定时,需使用该属性。
ref:当参数的值为另一bean的实例时,使用该属性指定所关联的bean实例。ref的值必须为某bean的id值。
当通过使用ref标签来引用其它实例时,ref标签具有两个属性:bean与local。
 <bean id="zhangsan" class=“di03.Person" >
<property name= "tool" >
<ref bean=“axe” />  
                  或  <ref local=“axe” />
</property>
</bean>
bean与local的区别是:
local:只会在当前配置文件中查指定的bean。
bean:若在当前配置文件中找不到指定的bean,还会到其它配置文件中查找。


6,容器中Bean的作用域
当通过Spring容器创建一个Bean实例时,不仅可以完成Bean的实例化,还可以通过scope属性,为Bean指定特定的作用域。Spring支持5种作用域。
(1)singleton:单态模式。即在整个Spring容器中,使用singleton定义的Bean将是单例的,只有一个实例。默认为单态的。
(2)prototype:原型模式。即每次使用getBean方法获取的同一个<bean />的实例都是一个新的实例。
(3)request:对于每次HTTP请求,都将会产生一个不同的Bean实例。只有在Web应用中使用Spring时,该作用域才有效。
(4)session:对于每个不同的HTTP session,都将产生一个不同的Bean实例。只有在Web应用中使用Spring时,该作用域才有效。
(5)global session:每个全局的HTTP session对应一个Bean实例。典型情况下,仅在使用portlet context的时候有效(多个Web应用共享一个session)。一般应用中,global-session与session是等同的。只有在Web应用中使用Spring时,该作用域才有效。





















































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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值