1. spring配置中属性也可以用标签代替例如value​属性可以用​<value></value>​标签代替
  2. value中的特殊字符用     <![CDATA[字面值]]>
  3. property标签的ref属性建立bean之间的引用关系
  4. 可以在property标签内建bean标签表示内部bean,不能被外部引用
  5. null值(null值不赋值默认也是null)使用方法标签内加<null/>标签

级联赋值配置(比如  A{B b;}  )同样需要set方法

class B{
String name;
}
class A{
B b;
}


类中的集合属性用list标签配置(例如List)的配置

<bean id="id名称" class="类路径">
<property name="属性名(集合变量名称)">
<list>
<ref bean="类路径"/>
</list>
</property>
</bean>

(Map类型)和list差不多,唯一需要注意的是Map有key和value所以对应<entry></entry>标签

<map>
<entry key="" value-ref=""></entry>
<entry key="" value-ref=""></entry>
</map>



配置properties的属性值

<property name="name" value="spring">
<props key="属性名">
属性值
</props>
<props key="属性名2">
属性值2
</props>
</property>

  1. 配置独立集合bean,使用基本的集合标签定义集合时,不能将集合作为独立的bean定义,导致其他bean无法引用该集合此时通过配置独立集合bean即可解决问题

    首先导入命名空间eclipse中如下图框出来的部分
    下面的勾选实际上就是在beans标签上加上属性xmlns:util="截图中地址"
    spring中配置bean属性的细节_xml
    然后就有<util:list>标签提示,如下规则在这个命名空间中添加列表

    <util:list id="hellos">
    <bean id="hello1" class="com.taotao.beans.HelloWorld"></bean>
    <bean id="hello2" class="com.taotao.beans.HelloWorld"></bean>
    <bean id="hello3" class="com.taotao.beans.HelloWorld"></bean>
    </util:list>

    接着就可以使用命名空间内的bean和list

    <bean id="id名称" class="类路径">
    <property name="hellos" ref="hellos引用前面命名空间的bean"></property>
    </bean>


p命名空间为bean属性赋值,需要先导入p命名空间 在beans标签上加属性 xmlns:p="http://www.springframework.org/schema/p",其实就是将xmlns复制因为不能重名所以加:p然后修改最后一个参数beans改成p即可,下面就能使用p来操作

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="id名称" class="类路径">
<property name="hellos" p:hellos-ref="hellos引用前面命名空间的bean"></property>
</bean>


 工厂bean,意思就是通过bean标签注入的是一个工厂bean,返回的类型不是bean属性class的值
注入的这个bean需要实现FactoryBean接口,通过重写的方法getObject方法得到返回类型的实例


bean的作用域,主要目的用于控制bean是单例还是多实例模式,通过bean标签设置scope属性值如果是singleton则是单例,如果是prototype则是多实例的bean,spring默认是单例的bean,意思没错需要时返回都是同一个如果设置为多实例,每次返回都是不同的对象地址


bean生命周期

单独在IOC的生命周期
一、通过构造方法创建bean(默认无参)
二、为bean属性赋值(调用set方法)
三、调用bean的初始化方法需要通过在bean属性上加init-method="方法名"才行
四、通过ioc获取bean
五、容器关闭时销毁bean, 通过bean标签属性destroy-method="销毁bean时调用的方法名"

完整的生命生命周期有七步
一、通过构造方法创建bean(默认无参)
二、为bean属性赋值(调用set方法)
三、把bean实例传递bean后置处理器的初始化之前方法
四、调用bean的初始化方法需要通过在bean属性上加init-method="方法名"才行
五、把bean实例传递bean后缀处理器的初始化之后方法
六、通过ioc获取bean
七、容器关闭时销毁bean, 通过bean标签属性destroy-method="销毁bean时调用的方法名"


自动装配,通过在bean上加属性autowired="byName"或者"byType"则如果对象如果有使用到其它bean则会自动将该bean装配到当前bean标签的实例上


引入外部properties文件或者yml文件等文件。通过在beans标签加命名空间一样的方式,xmlns:context="http://www.springframework.org/schema/context" 然后通过

<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
然后就可以直接使用propertioes文件定义的属性,通过spel表达式获取及 ${ } 或者 #{ }