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>
相关文章推荐
- java里程碑之泛型--擦除和转换
- java里程碑之泛型--擦除和转换
- 如何使用Eclipse构建HBase开发环境
- struts2 ajax
- Spring MVC Flash Attribute 解决POST/Redirect/GET模式问题缺陷
- java中类的初始化和对象的初始化
- Java中“==”和equal()的区别
- Java学习笔记(十三):关于子类初始化的过程
- 定时器的实现、java定时器Timer和Quartz介绍与Spring中定时器的配置
- java后台获取页面下拉框的选项只值,判断字符串是否相等
- Spring Aop实例
- eclipse 统计代码总行数
- Java代理(AOP)
- java集合框架---泛型设计和出现
- java 中 + 拼接字符串的效率
- (转) POJO和javabean的异同
- Spring Roo
- Java中字符串转整型和整型转字符串
- JavaWeb扩展--Freemarker(三)
- java 基础(一)