
自动装配
- Spring IOC 容器可以自动装配Bean,需要做的仅仅是在 < bean >标签的autowire属性里指定自动装配的模式
- byType(根据类型自动装配):根据bean的类型和当前bean的属性的类型进行自动装配,若容器中有一个以上的类型匹配的bean,则抛异常。
- byName(根据名称自动装配):根据bean的名字和当前bean的setter风格的属性名进行自动装配,若有匹配的就进行自动装配
例子
<bean id = "person" class = "Person" p:name="Tom" autowire = "byType" />
xml配置里的Bean自动装配的缺点
- 在Bean配置文件里设置autowire属性会自动装配Bean的所有属性,然而若只是希望装配个别属性时,autowire不那么灵活
- autowire属性要么根据类型自动装配要么根据名称自动装配,不能两者都用
- 还有就是,一般明确清晰的配置文件更有说服力,而自动装配可能差点意思
Bean之间的关系:继承、依赖
配置的继承
<bean id = "address" class = "Address" p:city="Beijing" p:street = "五道口“ />
<!--bean 配置的继承:使用的bean的parent属性指定继承哪个bean的配置-->
<bean id = "address2" class = "Address" p:strret="大钟寺" parent="address" />
抽象bean(就是一个模板)
抽象bean:也就是bean的abstract属性为true的bean,这样的bean不能被容器初始化,只能用来被继承,类似Java的抽象类
<bean id = "address" class="Address" p:city="beiJing" p:street="wudaokou" abstract="true" />
那么如果要继承这个bean配置,只要parent指向它
- Spring允许继承bean的配置,被继承的称为父bean,继承的称为子bean
- 子bean从父bean中继承配置,包括bean的属性配置
- 父bean可以作为配置模板,也可以作为bean实例,若只想把父bean作为模板,可以设置属性bean的abstract为true,Spring不会实例化这个bean
依赖关系
- Spring允许用户通过depends-on属性设定bean前置依赖的Bean,前置依赖的Bean会在本Bean实例化前创建好
<bean id = "Person" class = "Person" p:name = "Tom" p:address-ref = "address" depends-on="car" />
bean的作用域
singleTon;prototype
<bean id="car" class="Car" scope="prototype >
<property name = "brand" value = "aodi" />
<property name = "price" value = "300000" />
</bean>
使用bean的scope属性来配置bean的作用域
singleton:默认值,容器初始时创建bean实例,在整个容器的生命周期内只创建这一个bean,单例的
prototype:原型的。容器初始化时候不创建bean实例,每次请求时创建一个bean实例,并返回
使用外部属性文件
- 在配置bean的时候,有时候需要在Bean的配置文件中混入系统部署的细节信息,这些部署细节实际上要和bean配置相分离
<bean id ="dataSource" class="c3p0.DataSource">
<property name = "user" value = "root" />
<property name = "password" value = "123456" />
<property name = "driverClass" value = "jdbc.Driver" />
<property name = "jdbcUrl" value = "" />
</bean>
- spring提供了一个BeanFactory后置处理器,这个处理器允许用户将Bean配置的部分内容外移到属性文件中。在Bean的配置文件里使用形式为${val}的变量,后置处理器从属性文件里加载属性,使用这些属性替换变量
导入属性文件
<contex:property-placeholder location="classpath:db.properties"/>
<bean id ="dataSource" class="c3p0.DataSource">
<property name = "user" value = "${user}" />
<property name = "password" value = "${password}" />
<property name = "driverClass" value = "${driverclass}" />
<property name = "jdbcUrl" value = "${jdbcUrl}" />
</bean>
本文详细介绍了Spring框架中的Bean自动装配,包括byType和byName两种模式,以及其优缺点。同时,讨论了Bean之间的关系,如继承和依赖。配置继承允许bean配置的复用,依赖关系可以通过depends-on属性设定。此外,还涵盖了bean的作用域,如singleton和prototype,并解释了如何使用外部属性文件来管理部署细节。
3536

被折叠的 条评论
为什么被折叠?



