文章列表
Spring分散配置
在应用上下文中,使用PropertyPlaceholderConfigurer从外部属性文件装配信息:
程序清单:dbc.properties
driver=com.mysql.jdbc.driver
url=jdbc\:mysql\://localhost\:3306/db
程序清单:应用上下文从单个外部属性文件装载配置信息。
<bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.Pro ...
依赖检查
Spring除了能对容器中bean的依赖设置进行检查外,还可以检查bean定义中实际属性值的设置,当然也包括采用自动装配方式设置属性值的检查。
当需要确保bean的所有属性值(或者属性类型)被正确设置的时候,那么这个功能会非常有用。当然,在很多情况下,bean类的某些属性会具有默认值,或者有些属性并不会在所有场景下使用,因此这项功能会存在一定的局限性。就像自动装配一样,依赖检查也可以针对每一个bean进行设置。依赖检查默认为not,它有几种不同的使用模式,在xml配置文件中,可以在bean定义中为dependency-check属性使用以下几种值:
模式
自动装配之Autodetect
Autodetect:通过bean类的自省机制(introspection)来决定是使用constructor还是byType方式进行自动装配。如果发现默认的构造器,那么将使用byType方式。
下面通过示例来理解:
JavaBean代码:
//JavaBeanàAddressServiceI定义了一个address属性,和一个相应的set依赖注入方法
自动装配之constructor
Constructor: 与byType的方式类似,不同之处在于它应用于构造器参数。如果在容器中没有找到与构造器参数类型一致的bean,那么将会抛出异常。
下面通过示例来理解:
JavaBean代码:
自动装配之byType
byType:如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配。如果存在多个该类型的bean,那么将会抛出异常,并指出不能使用byType方式进行自动装配。若没有找到相匹配的bean,则什么事都不发生,属性也不会被设置。如果你不希望这样,那么可以通过设置dependency-check="objects"让Spring抛出异常。
下面通过示例来理解:
JavaBean代码:
//JavaBeanàAddressServiceImpl
自动装配之byName
byName:根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配。例如,在bean定义中将autowire设置为by name,而该bean包含master属性(同时提供setMaster(..)方法),Spring就会查找名为master的bean定义,并用它来装配给master属性。
下面通过示例来理解:
JavaBean代码:
自动装配
Spring IoC容器可以自动装配(autowire)相互协作bean之间的关联关系。因此,如果可能的话,可以自动让Spring通过检查BeanFactory中的内容,来替我们指定bean的协作者(其他被依赖的bean)。autowire一共有五种类型。由于autowire可以针对单个bean进行设置,因此可以让有些bean使用autowire,有些bean不采用。autowire的方便之处在减少或者消除属性或构造器参数的设置,在xml配置文件中,可以在<bean/>元素中使用autowire属性指定:
模式
Spring的bean生命:
通过几个示例来演示:
示例1:最基本的示例
在这里我们建立一个CycleListTest的JavaBean
public class CycleLifeTest{
private String say;
public void setSay(String say) {
System.out.println("set方法");
this.say = say;
}
public void sayTest(){
System.out.println("Cycl ...
Bean常用属性介绍(一)
<bean name="xxx" class="指定的bean类" scope="singleton"></bean>
id属性:Java Bean在BeanFactory中的唯一标识,代码中通过BeanFactory获取JavaBean实¾
Spring基础语义(一)
何谓控制反转(IoC=Inversion of Control),何谓依赖注入(DI=Dependency Injection)?
IoC,用白话来讲,就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。
IoC的另一个新名字:“依赖注入(Dependency Injection)。
所谓依赖注入,即组件之间的依赖关系由容器在运行期决定,形象的来说,即由容器动态的将某种依赖关系注入到组件之中。
依赖注入的目标并非为软件系统带来更多的功能,而是为了提升 ...