Spring in action学习

来源:互联网 发布:网络优化培训班泉州 编辑:程序博客网 时间:2024/05/21 14:59

一:Spring装配bean(IOC注入)

1、构造器注入

对于拥有构造器的bean

构造器参数是基本型:

<bean id="duke"<span style="white-space:pre"></span>class="com.springinaction.springidol.Juggler"><span style="white-space:pre"></span><constructor-arg value="15"/><!--构造器参数,基本类型--></bean>
构造器参数还有其他类对象:

<bean id="poeticDuke"<span style="white-space:pre"></span>class="com.springinaction.springidol.PoeticJuggler"><span style="white-space:pre"></span><constructor-arg value="15"/><span style="white-space:pre"></span><constructor-arg ref="sonnet29"/></bean>

如果没有bean没有构造器:如工厂方法创建bean

<bean id="theStage"<span style="white-space:pre"></span>class="com.springinaction.springidol.Stage"factory-method="getInstance" />

2、注入bean属性 setter注入

<bean id="kenny"<span style="white-space:pre"></span>class="com.springinaction.springidol.Instrumentalist"><span style="white-space:pre"></span><propertyname="song"value="JingleBells"/></bean>
bean含有其他对象的引用:

<bean id="kenny2"<span style="white-space:pre"></span>class="com.springinaction.springidol.Instrumentalist"><span style="white-space:pre"></span><propertyname="song"value="JingleBells"/><span style="white-space:pre"></span><propertyname="instrument"ref="saxophone"/></bean>
注入内部bean:

<bean id="kenny"<span style="white-space:pre"></span>class="com.springinaction.springidol.Instrumentalist"><span style="white-space:pre"></span><propertyname="song"value="JingleBells"/><span style="white-space:pre"></span><propertyname="instrument"><span style="white-space:pre"></span><beanclass="org.springinaction.springidol.Saxophone"/><span style="white-space:pre"></span></property></bean>

装配集合:



<bean id="hank"<span style="white-space:pre"></span>class="com.springinaction.springidol.OneManBand"><span style="white-space:pre"></span><propertyname="instruments"><span style="white-space:pre"></span><list><span style="white-space:pre"></span><ref bean="guitar"/><span style="white-space:pre"></span><ref bean="cymbal"/><span style="white-space:pre"></span><ref bean="harmonica"/><span style="white-space:pre"></span></list><span style="white-space:pre"></span></property></bean>
<bean id="hank"class="com.springinaction.springidol.OneManBand"><propertyname="instruments"><set><ref bean="guitar"/><ref bean="cymbal"/><ref bean="harmonica"/><ref bean="harmonica"/></set></property></bean>
<bean id="hank"class="com.springinaction.springidol.OneManBand"><propertyname="instruments"><map><entry key="GUITAR"value-ref="guitar"/><entry key="CYMBAL"value-ref="cymbal"/><entry key="HARMONICA"value-ref="harmonica"/></map></property></bean>

<bean id="hank"class="com.springinaction.springidol.OneManBand"><propertyname="instruments"><props><prop key="GUITAR">STRUMSTRUMSTRUM</prop><prop key="CYMBAL">CRASHCRASHCRASH</prop><prop key="HARMONICA">HUMHUMHUM</prop></props></property></bean>

注入空值:

<propertyname="someNonNullProperty"><null/></property>
SpEL表达式:

<bean id="carl"class="com.springinaction.springidol.Instrumentalist"><property name="song" value="#{kenny.song}"/><!--song与kenny的song一致--></bean>
有一个SongSelector的bean,有一个selectSong方法,返回一首歌

<propertyname="song" value="#{songSelector.selectSong()}"/>
下面使用?.toUpperCase()代替.toUpperCase(),在带有toUpperCase()时先检查songSelector.selectSong()返回的是否为空,若为空则不会再调用toUpperCase()方法

<property name="song" value="#{songSelector.selectSong()?.toUpperCase()}"/>
当henny.song为null时,则将Greensleeves赋值给song
<property name="song" value="#{kenny.song?:'Greensleeves'}"/>



0 0
原创粉丝点击