FieldRetrievingFactoryBean
2016-03-29 10:50
288 查看
FieldRetrievingFactoryBean
spring提供了filed的值注入和method的返回值注入。1、Field值的注入
filed值注入需要使用org.springframework.beans.factory.config.FieldRetrievingFactoryBean来获取类的静态变量。
例如,我们通常在接口中定义常量:
view plaincopy to clipboardprint?package com.baobaotao.fb;
public interface CarBrandType {
String HONG_QI = "红旗";
String JI_LI = "吉利";
}
package com.baobaotao.fb;
public interface CarBrandType {
String HONG_QI = "红旗";
String JI_LI = "吉利";
}
下面利用FieldRetrievingFactoryBean获取CarBandType接口中定义的常量,并注入到某个bean的属性中:
view plaincopy to clipboardprint?<bean id="car" class="com.baobaotao.fb.Car">
<property name="brand" ref="hongQi"/>
</bean>
<bean id="hongQi" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"
<property name="staticField" value="com.baobaotao.fb.CarBrandType.HONG_QI"/>
</bean>
<bean id="car" class="com.baobaotao.fb.Car">
<property name="brand" ref="hongQi"/>
</bean>
<bean id="hongQi" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"
<property name="staticField" value="com.baobaotao.fb.CarBrandType.HONG_QI"/>
</bean>
Spring还允许用户用常量的全限定名作为FieldRetrievingFactoryBean的id,其效果和通过配置staticField属性是一样的:
view plaincopy to clipboardprint?<bean id="car" class="com.baobaotao.fb.Car">
<property name="brand" ref="com.baobaotao.fb.CarBrandType.HONG_QI"/>
</bean>
<bean id="com.baobaotao.fb.CarBrandType.HONG_QI" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" />
<bean id="car" class="com.baobaotao.fb.Car">
<property name="brand" ref="com.baobaotao.fb.CarBrandType.HONG_QI"/>
</bean>
<bean id="com.baobaotao.fb.CarBrandType.HONG_QI" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean" />
当然,也可以直接将FieldRetrievingFactoryBean以内置bean的方式对brand属性进行赋值,这样在配置上更紧凑一些:
view plaincopy to clipboardprint?<bean id="car" class="com.baobaotao.fb.Car">
<property name="brand">
<bean id="com.baobaotao.fb.CarBrandType.HONG_QI" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
</bean>
</property>
</bean>
<bean id="car" class="com.baobaotao.fb.Car">
<property name="brand">
<bean id="com.baobaotao.fb.CarBrandType.HONG_QI" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
</bean>
</property>
</bean>
2、Method返回值的注入
Method返回值的注入需要使用MethodInvokingFactoryBean来完成。
在xml配置中,需要设定targetObject和targetMethod来指定目标bean和方法。如果使用静态方法,则需要指定targetClass和targetMethod
配置文件如下:
view plaincopy to clipboardprint?<bean id="bdog" class="com.baobaotao.fb.Dog">
<property name="age">
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject">
<ref local="randomAge"/>
</property>
<property name="targetMethod">
<value>getAge</value>
</property>
</bean>
</property>
</bean>
<bean id="randomAge" class="com.baobaotao.fd.RandomAge" />
<bean id="bdog" class="com.baobaotao.fb.Dog">
<property name="age">
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject">
<ref local="randomAge"/>
</property>
<property name="targetMethod">
<value>getAge</value>
</property>
</bean>
</property>
</bean>
<bean id="randomAge" class="com.baobaotao.fd.RandomAge" />
对于静态方法:
view plaincopy to clipboardprint?<bean id="bdog" class="com.baobaotao.fb.Dog">
<property name="age">
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass">
<value>com.baobaotao.fb.RandomAge</value>
</property>
<property name="targetMethod">
<!-- getAge必须是静态方法 -->
<value>getAges</value>
</property>
</bean>
</property>
</bean>
相关文章推荐
- express插件之body-parser
- 使用pods添加第三方的时候,出现ld: library not found for -lpop
- 80. Remove Duplicates from Sorted Array II
- Android——Volley学习
- Opencv + Qt (linux, build with qt)
- Liux常用命令和caffe 常用命令
- IOS UIToolBar
- linux下mail命令发送邮件
- MySql事务详解
- iOS Block 写法详解
- Swift - String与NSString的区别,以及各自的使用场景
- java缓存框架详解
- Web前端开发规范文档
- 2017
- SQLite
- sql decode 函数用法 将查询结果翻译 转换
- TextView实现一行居中显示,多行居左显示
- windows7下 安装 mysql-5.7.11-win32
- Python简单网页爬虫——极客学院视频自动下载
- Apache下安装配置mod_pagespeed模块,轻松完成网站提速