Spring2.6高级配置、util简化配置

来源:互联网 发布:直接消耗系数矩阵 编辑:程序博客网 时间:2024/06/05 20:37
高级配置
1、调用getter方法:
使用PropertyPathFactoryBean。

         - 调用哪个对象: setTargetObject

         - 哪个getter方法: setPropertyPath(String propertyPath)

eg:

①beans.xml


②测试:

ApplicationContext appContext = new ClassPathXmlApplicationContext("beans.xml");System.out.println(appContext.getBean("username"));

③测试结果:


④简化配置:

   - getter:<util:property-path .../>

   - setter:<util:properties/>

需要配置命名空间:

xmlns:util="http://www.springframework.org/schema/util"

http://www.springframework.org/schema/util

http://www.springframework.org/schema/util/spring-util.xsd"




2、 访问类或对象的Field值:使用FieldRetrievingFactoryBean。

GetFieldFactoryBean即可获取静态field的值,也可获取实例field的值。
(1)访问静态field:
         - 调用哪个类: setTargetClass
         - 哪个field: setTargetField

eg:

①beans.xml

<bean id = "getFieldBasic" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" abstract="true"/><bean id="val1" parent="getFieldBasic"p:targetClass="java.sql.Connection"p:targetField="TRANSACTION_SERIALIZABLE"/>

②简化配置: <util:constant .../>

<util:constant id="v1" static-field="java.sql.Connection.TRANSACTION_SERIALIZABLE"/>

(2)访问实例field: ————几乎没用。因为它要求被访问的实例field是public,否则会报错java.lang.NoSuchFieldException
         - 调用哪个对象: setTargetObject

         - 哪个field: setTargetField

eg:

①beans.xml

<bean id="puppy" class="cony.domain.Puppy" p:kind="秋田"/><bean id="puppyKind" parent="getFieldBasic"p:targetObject-ref="puppy"p:targetField="kind"/>

无简化配置

3、调用普通方法:使用MethodInvokingFactoryBean。

访问静态方法:
     - 调用哪个类: setTargetClass
     - 哪个方法: setTargetMethod
     - 传参数:   setArguments(Object[] args);

访问实例方法
    - 调用哪个对象: setTargetObject
    - 哪个方法: setTargetMethod
    - 传参数:   setArguments(Object[] args);

eg:实现一个带有两个按钮和一个文本框的窗口

<!-- JFrame mainWin = new JFrame("我的窗口"); --><bean id="mainWin" class="javax.swing.JFrame"c:_0="我的窗口"p:visible="true"/><!-- JTextArea jta = new JTextArea(9 ,60); --><bean id="jta" class="javax.swing.JTextArea"c:_0="9"c:_1="60"/><!--mainWin.add( new JScrollPane(jta) );(使用嵌套bean) --><bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"p:targetObject-ref="mainWin"p:targetMethod="add"><property name="arguments"><list><bean class="javax.swing.JScrollPane"c:_0-ref="jta"/></list></property></bean><!-- JPanel jp = new JPanel(); --><bean id="jp" class="javax.swing.JPanel"/><!-- mainWin.add(jp , BorderLayout.SOUTH); --><bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"p:targetObject-ref="mainWin"p:targetMethod="add"><property name="arguments"><list><ref bean="jp"/><util:constant static-field="java.awt.BorderLayout.SOUTH"/></list></property></bean><!-- JButton okBn = new JButton("确定"); --><bean id="okBn" class="javax.swing.JButton"c:_0="确定"/><!-- jp.add(okBn); --><bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"p:targetObject-ref="jp"p:targetMethod="add"><property name="arguments"><list><ref bean="okBn"/></list></property></bean><!-- JButton cancelBn = new JButton("取消"); --><bean id="cancelBn" class="javax.swing.JButton" c:_0="取消"/><!-- jp.add(cancelBn); --><bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"p:targetObject-ref="jp"p:targetMethod="add"><property name="arguments"><list><ref bean="cancelBn"/></list></property></bean><!-- mainWin.pack();--><bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"p:targetObject-ref="mainWin"p:targetMethod="pack"/>
util简化集合配置

list:该标签用于定义容器中的List集合,并支持通过list-class属性指定List集合的实现类。
set:该标签用于定义容器中的Set集合,并支持通过set-class属性指定Set集合的实现类。
map:该标签用于定义容器中的Map集合,并支持通过map-class属性指定Map集合的实现类。
properties:该标签用于加载一份属性文件,并根据加载的属性文件创建一个Properties Bean实例。

<bean id="dog" class="cony.domain.Puppy" p:kind="古代牧羊犬" /><bean id="dog2" class="cony.domain.Puppy" p:kind="萌萌的柯基" /><bean id="dinosaur" class="cony.domain.Dinosaur" p:kind="霸王龙"/><bean id="user" class="cony.domain.User"p:name="黄豆"p:age="21"p:dog-ref="dog"/><util:list id="list1" list-class="java.util.ArrayList"><value type="java.lang.String">你好</value><value>齐天大圣</value><bean class="javax.swing.JFrame" c:_0="myWin"/></util:list><util:set id="set1" set-class="java.util.TreeSet"><value>12</value><value>32</value><value>2</value></util:set><util:map id="map1" map-class="java.util.HashMap"><entry key="little" value-ref="dog"/><entry key="big" value-ref="dinosaur"/></util:map><util:properties id="prop1" location="classpath:abc.properties"/>


原创粉丝点击