1、属性的set方法注入<property>
标签
2、对象的构造器注入<constructor-arg>
标签
1)构造器方式注入属性的时候可以使用类型和位置进行不同构造器的匹配
2)如果参数个数相等,参数类型也一直得构造器,则会匹配位置靠前的构造器
3)属性值可以使用<value>
子节点进行赋值
如果字面值出现特殊字符的时候可以使用<![CDATA[(特殊字符)]]>
将特殊字符包含在里边
3、在属性中引用其他的bean
(1)、引用外部声明的bean <property>
标签中的ref属性或者ref子标签
(2)、在内部声明一个bean <property>
标签中声明一个bean,不能被外部引用,只能在内部用
4、为级联属性赋值:
需要先舒适化属性,才能在为级联属性赋值,否则就会出现异常,struts2可以
5、集合属性赋值:
每种集合都有相应的标签与之对应,进行相应的赋值操作。
6、配置单例的集合bean的时候,需要导入util命名空间
使用<util:list>
标签进行配置list
7、通过p命名空间为bean的属性赋值需要先导入p命名空间,相较于传统的方式更加的简洁
在bean标签中中直接使用 p:属性名 对对象的属性进行赋值
8、自动装配
1)在<bean>
的autowire属性里指定自动装配的类型
2)byType根据类型自动装配 根据bean的类型与对象属性的类型相一致就能够正常匹配,值得注意的是,根据类型装配的bean的类型在ioc容器中只能有一个
3)byName根据名称自动装配(bean的名字) 与javabean中set方法中的属性名是一致的才能自动装配,如果不能匹配则不能装配
4)byConstruct根据构造器进行自动装配(不推荐,较复杂)
5)缺点:
自动装配不够灵活,多个属性的设置方式都必须保持一致
9、bean之间的关系:继承,依赖
1)配置的继承,使用bean的parent属性,子bean也可以覆盖父bean的属性值
2)父bean作为模板,也可以作为bean的实例,只想把父bean作为模板,可以设置bean的abstract属性为true
3)并不是bean里边所有的属性都会被继承,不如自动注入autowire的和abstract的
4)也可以忽略父bean的class属性,让子bean指定自己的类,父bean共享相同的属性,但是此时abstract属性必须设置为true
5)依赖关系:使用bean的depends-on属性设置前置依赖的bean,前置依赖的bean在之前创建
10、bean的作用域
1)使用bean的scope属性来配置bean的作用域
2)默认为singleton,容器初始化的时候创建bean,整个生命周期中只创建一个实例
3)prototype,原型的,容器初始化时不创建bean的实例,而在每次请求时都创建一个新的bean实例返回
11、使用外部属性文件
作用:将系统部署的细节信息和bean的配置分离
spring提供propertyPlaceholderConfigurer的Beanfactory后置处理器,这个处理器允许用户将bean的配置内容外移到属性文件当中,然后再使用${var}的形式使用属性文件中的配置信息
12、spEL:引用bean、属性、方法
1)使用#{var}作为定界符
2)#{beanName} 引用bean
3)#{beanName.property} 引用bean的属性
4)#{T(全类名).属性名} 引用类的静态常量
5)spEL的定界符当中也可以使用各种运算符号,对属性进行动态赋值
13、IOC容器中bean的声明周期
生命周期管理过程:
1)通过构造器或者工厂方法创建bean的实例
2)为bean的属性赋值和对其他bean的引用
3)调用bean的初始化方法(init)
4)bean可以使用
5)容器关闭时,调用bean的销毁方法(destroy)