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

Spring配置文件 装配Bean

2015-10-22 17:36 525 查看
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="myBean" class="cn.com.jinlulu.pj.instance.Message">
<property name="message"><!-- 这个中的name必须跟你的实体名字一样 -->
<value>spring!</value>
</property>
</bean>
<bean id="duke" class="cn.com.jinlulu.pj.springinaction.Juggler">
<constructor-arg value="15"/>
</bean>
<bean id="poeticDuke" class="cn.com.jinlulu.pj.springinaction.PoeticJuggler">
<constructor-arg value="15"/>
<constructor-arg ref="sonnect29"/>
</bean>
<bean id="sonnect29" class="cn.com.jinlulu.pj.dao.impl.Sonnect29">
</bean>
<bean id="theStage" class="cn.com.jinlulu.pj.springinaction.Stage"
factory-method="getInstance">
</bean>
<bean id="kenny" class="cn.com.jinlulu.pj.springinaction.Instrumentalist">
<property name="song" value="BIGBONG"></property>
<property name="instrument" ref="saxophone">
<!-- 我可以将这个saxophone放在这里,可以防止其他bean调用,就只属于这个kenny的了 -->
<!-- <bean class="cn.com.jinlulu.pj.dao.impl.Saxophone"></bean> -->
</property>
<!-- 这里不能支持有多个属性可以用下面的list等 -->
<!-- <property name="instrument" ref="piano"></property> -->
</bean>
<!-- 另一种表达方式跟上面那个是一样的 -->
<!--     <bean id="Kenny" class="cn.com.jinlulu.pj.springinaction.Instrumentalist"
p:song="BIGBONG" p:instrument-ref="saxophone"/> -->
<bean id="saxophone" class="cn.com.jinlulu.pj.dao.impl.Saxophone"></bean>
<bean id="piano" class="cn.com.jinlulu.pj.dao.impl.Piano"></bean>
<!-- 从这里可以支持多个属性 -->
<bean id="hand" class="cn.com.jinlulu.pj.springinaction.OneManBand">
<property name="instruments">
<list><!-- 可以支持成员重复 -->
<ref bean="piano"/><!-- 当然这个bean咱们在前面已经写好了 -->
<ref bean="saxophone"/>
<ref bean="saxophone"/><!-- 这行的内容可以表现出来 -->
</list>
</property>
</bean>
<bean id="hand2" class="cn.com.jinlulu.pj.springinaction.OneManBand">
<property name="instruments">
<set><!-- 不能支持成员重复 -->
<!-- set的在是可以配置java.util.List类型的属性的,但是要保证list类型的成员不重复 -->
<ref bean="piano"/>
<ref bean="saxophone"/>
<ref bean="saxophone"/><!-- 这行的内容没有输出来,可能就是因为set不能重复的原因,但是它也没报错 -->
</set>
</property>
</bean>
<!-- map -->
<bean id="hand3" class="cn.com.jinlulu.pj.springinaction.OneManBand">
<property name="instrumentMap">
<map>
<entry key="PIANO" value-ref="piano"/>
<entry key="SAXOPHONE" value-ref="saxophone"/>
</map>
</property>
</bean>
<!-- 如果map中的key和value都为String,那也可以参照这种方法 -->
<!-- <bean id="hand4" class="cn.com.jinlulu.pj.springinaction.OneManBand">
<property name="instrumentMap">instrumentMap的类型为Properties
<props>
<prop key="piano">BOON</prop>
<prop key="saxophone">TOOT</prop>
</props>
</property>
</bean> -->
<!-- 有些属性想让他为空值(这种情况不常见) -->
<bean id="hand5" class="cn.com.jinlulu.pj.springinaction.OneManBand">
<property name="instrumentMap"><null/></property>
</bean>
<!-- SPEL -->
<bean id="kenny2" class="cn.com.jinlulu.pj.springinaction.Instrumentalist">
<property name="song" value="#{3}"></property>
<!-- <property name="song" value="#{3.2}"></property>
<property name="song" value="#{1e4}"></property>
<property name="song" value="#{'chuck'}"></property>
<property name="song" value='#{"chuck"}'></property>
<property name="song" value="#{false}"></property> -->
</bean>
<!-- 使用spel将一个bean装配到instrument属性中 -->
<bean id="kenny3" class="cn.com.jinlulu.pj.springinaction.Instrumentalist">
<property name="instrument" value="#{saxophone}"/>
<!-- <property name="instrument" ref="saxophone"/> -->
</bean>
<bean id="cerl" class="cn.com.jinlulu.pj.springinaction.Instrumentalist">
<property name="song" value="#{kenny.song}"/>
</bean>
<!-- spel还有一个强大功能引用方法 如果这个selectSong返回null,会报空指针异常-->
<!-- <bean id="" class="">
<property name="song" value="#{songSelector.selectSong().toUpperCase()}"/>
这样不会报空指针异常意思就是selectSong()方法如果返回null就不调用toUpperCase()方法了
<property name="song" value="#{songSelector.selectSong()?.toUpperCase()}"/>
</bean> -->
<!-- spel调用类作用域的方法和常量
random()该方法返回一个无符号的double值,大于或等于0.0且小于1.0. -->
<bean id="Math" class="cn.com.jinlulu.pj.springinaction.MathForMathod">
<property name="multiplier" value="#{T(java.lang.Math).PI}"/>
<property name="randomNumber" value="#{T(java.lang.Math).random()}"/>
</bean>
<!-- 做两个数字相加 当然乘法*除法/求余%也是可以用的,也可以用"1"+""这样连接字符串-->
<!-- <bean id="" class="">
<property name="adjustAmount" value="#{counter.total+42}"/>
</bean> -->
<!-- 可以这样判断,返回的是布尔类型 -->
<!-- < > <= >= ==都可以用,但是最好用SpEL文本格式lt gt le ge eq -->
<!--  <bean id="" class="">
<property name="isEqual" value="#{counter.total == 42}"/>
</bean> -->
<!-- 可以使用 and or not或者! -->
<!-- <bean id="" class="">
<property name="largeCircle" value="#{shape.kind=='circle' and shape.perimeter gt 10000}"/>
</bean> -->
<!-- 可以使用三元运算符 -->
<!-- <bean id="" class="">
<property name="largeCircle" value="#{SongSelector.selectSong=='Jingle Bells'?piano:saxophone}"/>
</bean> -->
<!-- <bean id="" class="">
<property name="largeCircle" value="#{SongSelector.selectSong==null?SongSelector.selectSong:'saxophone'}"/>
</bean> -->
<!-- 这种方式可以写成下面这种 -->
<!-- <bean id="" class="">
<property name="largeCircle" value="#{SongSelector.selectSong ?: 'saxophone'}"/>
</bean> -->
<!-- 表达list方式也可以这样用 -->
<!-- <util:list id="cities">
<bean class="" p:name="111" p:state="GA" p:population="1145451"/>
<bean class="" p:name="121" p:state="GA" p:population="1145451"/>
<bean class="" p:name="113" p:state="GA" p:population="1145451"/>
<bean class="" p:name="211" p:state="GA" p:population="1145451"/>
<bean class="" p:name="131" p:state="GA" p:population="1145451"/>
<bean class="" p:name="112" p:state="GA" p:population="1145451"/>
</util:list> -->
<!-- <bean id="city" class="">
<property name="chosenCity" value="#{city[2]}"/>
</bean> -->
<!-- <bean id="city" class="">
<property name="chosenCity" value="#{city['111']}"/>
</bean> -->
<!-- 加载其他配置文件 -->
<!-- setting Bean是一个java.util.Properties类这样就可以访问Properties的属性 -->
<util:properties id="setting" location="classpath:setting.properties"/>
<!--  <bean id="city" class="">
<property name="accessToken" value="#{settings['twitter.accessToken']}"/>
</bean> -->
<!-- systemEnvironment包含应用环境在机器上的所有环境变量 -->
<bean id="homePath" class="">
<property name="homePath" value="#{systemEnvironment['HOME']}"><
4000
/property>
</bean>
<!-- systemProperties包含了java应用程序启动时所设置的所有属性 -->
<bean id="homePath2" class="">
<property name="homePath" value="#{systemProperties['application.home']}"></property>
</bean>
<!-- 查询人口多于1000的城市 -->
<bean>
<property name="bigCities" value="#{cities.?[population gt 1000]}"></property>
</bean>
<!-- 查询出第一个匹配项 -->
<bean>
<property name="aBigCity" value="#{cities.^[population gt 1000]}"></property>
</bean>
<!-- 查出最后一个匹配项 -->
<bean>
<property name="aBigCity" value="#{cities.$[population gt 1000]}"></property>
</bean>
<!-- 投影集合 ![]-->
<!-- 从集合的每个成员中选择特定的属性放在一个新的集合中 -->
<!-- 一个仅仅包含城市名称的一个String类型的集合 -->
<!-- 包含111 121 113等 -->
<bean>
<property name="cityNames" value="#{cities.![name]}"></property>
</bean>
<!-- 也可以有多个 -->
<bean>
<property name="cityNames" value="#{cities.![name+','+state]}"></property>
</bean>
<!-- 将人数多于1000的城市放入一个新的集合中 -->
<bean>
<property name="cityNames" value="#{cities.?[population gt 1000].![name+','+state]}"></property>
</bean>
</beans>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: