您的位置:首页 > 编程语言 > Java开发

Spring(二)--Bean装配

2015-12-31 11:13 423 查看
一、装配Bean

1.声明Bean

(1)创建Spring配置有两种方法:xml和Java注解。

十个命名空间:aop、beans、context、jee、jms、lang、mvc、oxm、tx、util

(2)声明Bean

<bean id="test" class = "com.spring.test.Juggler" />


(3)构造器

<bean id="test" class = "com.spring.test.Juggler" />
<constructor-arg value='15' />
<constructor-arg ref="class_name" />


工厂模式:factory-method = “method_name”

(4)Bean的作用域

默认为单例singleton,即容器每次返回bean的同一实例。希望每次返回不同实例,则使用prototype。

singleton、prototype、request、session、global-session、

(5)初始化、销毁Bean

推荐:init-method、destroy-method

default-init-method、、default-destroy-method

另外一种,实现InitiaolizingBean、DisposableBean接口,但这样Bean与Spring的API耦合,所以不推荐

2.注入Bean属性

(1)注入

<
property name="propoty_name"  value="value_of_property" /
>

其中value支持string int float double

(2)注入内部Bean: 将value-ref替换为类声明

<`property name="propoty_name" /`>
<`bean class="com.subclass" /`>
</`property`>


(3)使用命名空间p装配属性

<property name="propoty_name"  value="value_of_property" />


更换为

<p: song="song name"
p:instrument-ref = "saxophone" />


(4)装配集合

对于Bean属性值为多个、复数时,可使用

list:允许重复

set:不允许重复

map:键值对可以为任意类型

props:键值对都为string

List:

<bean id="test" class="com.class.test">
<property name="instruments">
<list>
<ref bean="guitar" />
<ref bean="cymbal" />
</list>
</property>
</bean>


对应到java程序为java.util.List instruments;

Map:

<bean id="test" class="com.class.test">
<property name="instruments">
<map>
<entry key="Guitar" value-ref="guitar" />
</map>
</property>
</bean>


对应java:

Map

<bean id="test" class="com.class.test">
<property name="instruments">
<props>
<prop key="guitar">nei rong</prop>
</props>
</property>
</bean>


对应java:

Properties instruments;

(5)装配空值

3.使用Spring表达式(Spring Expression Language,SpEL)装配

(1)spEL基本原理

#{}界定符

避免空指针访问,使用 ?. 代替 . 访问方法,例如 classA.getNo()?.toUpperCase();

T()调用类的静态方法和常量: T(java.lang.Math).PI

可以使用算术运算、逻辑(and、or…)运算、条件运算(?:)、正则表达式、

关系运算(应用文本表达,如le, not <=)

正则表达式: #{admin.email matches ‘[a-zA-Z]’}

(3)在spEl中筛选集合

#{List_name[2]}

查询运算符 .?[] ,

.^[],.$[] 分别查询第一个和最后一个匹配的元素

如city.?[population gt 100],获取城市人口大于100的城市

投影集合 .![]

例如仅将城市名称作为参数,而不是将城市作为参数

<property name="city_name" value="#{cities.![name + ', ' + population]}"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: