- 浏览: 1061417 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (501)
- dwr (6)
- javascript (84)
- oracle (66)
- jsp/servlet (18)
- ant (3)
- 基础知识 (12)
- EXT (10)
- My SQL (10)
- java (71)
- spring (37)
- 学习的对象 (2)
- Linux (24)
- 面试 (1)
- HTML/CSS (11)
- tomcat (11)
- 收藏夹 (2)
- Power Designer (2)
- struts.xml配置文件 (1)
- sturts2 (3)
- myeclipse (8)
- eclipse (7)
- Maven (34)
- SVN (3)
- SAP JCO (2)
- JBOSS (11)
- webservice (8)
- word (1)
- 敏捷开发 (1)
- sybase (4)
- Nexus (3)
- EhCache (3)
- log4j (3)
- Cookie (4)
- Session (4)
- CXF (7)
- AXIS (2)
- SSO (1)
- LDAP (1)
- velocity (2)
- Jquery (5)
- redis (2)
- http (4)
- dojo (1)
- Linux资源监控软件mnon的安装与运用 (1)
- notepad++ (1)
- EA (1)
- UML (1)
- JasperReports (1)
- 权限 (0)
- freemarker (4)
- Spring MVC (1)
- JMS (1)
- activeMQ (1)
- hession (3)
- 安全 (1)
- ibatis (2)
- log (1)
- nginx (1)
最新评论
-
winhbb:
我刚好遇到了一个问题(在可以依赖注入的场合有效):有两个模块A ...
解决Maven项目相互依赖/循环依赖/双向依赖的问题 -
nanjiwubing123:
long3ok 写道你好 XmlOutputFormatter ...
用XStream转换复杂XML -
zhoujianboy:
另外一个方法实现eclipse tomcat 热部署:http ...
eclipse下实现maven项目在tomcat容器热部署方法 -
long3ok:
你好 XmlOutputFormatter 请问这个类是在什么 ...
用XStream转换复杂XML -
ganbo:
总结的好,文章给力。
解决Maven项目相互依赖/循环依赖/双向依赖的问题
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>
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>
发表评论
-
Spring MVC 3.1新特性 生产者、消费者请求限定
2015-06-15 07:42 711参考地址: http://www.iteye.com/to ... -
CSRF TOKEN
2015-02-14 18:02 1144package com.uncle5.pubrub.web.c ... -
Spring MVC Controller单例陷阱
2014-06-27 08:51 678Spring MVC Controller默认是 ... -
[Spring] Hessian权限认证,加密前面
2014-03-06 09:52 1611Hessian的一些基本简介已经在上一节已经全部介绍了,上一节 ... -
Spring中ApplicationContext的事件机制(二 内定事件)
2014-01-09 11:08 12338在Spring中已经定义了五个标准事件,分别介绍如下: 1) ... -
当spring 容器初始化完成后执行某个方法 .
2014-01-08 17:40 1442在某些应用中,我们希望,当spring 容器将所有的bea ... -
spring学习之springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序
2013-09-12 10:43 1210spring mvc处理方法支持如下的返回方式:ModelA ... -
JSR-303
2013-09-12 00:22 929JSR-303 是JAVA EE 6 中的一项子规范,叫做Be ... -
EHCACHE分布式缓存
2013-09-06 17:26 1311从1.2版本开始,Ehcache可 ... -
springMVC+freemarker整合
2013-09-06 16:39 1431springMVC整合大家都比较熟悉了吧主要有以下几个步骤: ... -
Spring MVC 学习笔记 Viewresol和View
2013-09-06 15:34 926Spring MVC使用ViewResolver来根据cont ... -
Spring的PropertyPlaceholderConfigurer应用
2013-09-06 15:04 3216Spring 利用PropertyPlaceholderCon ... -
SpringSecurity3_Logout
2013-08-22 16:07 2579Logout¶•退出登录的链接 <a href=&quo ... -
spring的default-lazy-init参数 .
2013-04-23 20:08 979spring在启动的时候,会默认加载会默认加载整个对象实例图, ... -
Spring MVC 如何防止XSS、SQL注入攻击
2013-04-16 15:40 1679在Web项目中,通常需要处理XSS,SQL注入攻击,解决这个问 ... -
Spring JMS
2013-01-08 10:48 972http://blog.csdn.net/shiqiang12 ... -
给spring jdbctemplate加上一层“绮丽外衣”-动态SQL&&SQL语句以文件存放
2013-01-07 16:00 3303给spring jdbctemplate加上一层“华丽外衣”- ... -
使用Spring的NamedParameterJdbcTemplate完成DAO操作 .
2013-01-07 14:54 1180NamedParameterJdbcTemplate内部包含了 ... -
cron表达式(quartz中时间表达式)
2012-12-20 15:54 993http://sosuny.iteye.com/blog/46 ... -
spring 3中新增的@value注解
2012-11-26 22:31 3378在spring 3.0中,可以通过使用@value,对一些如x ...
相关推荐
标题与描述中的关键词“知识共享-...例如,在`CarBrandType`接口中定义了两个常量`HONG_QI`和`JI_LI`,然后通过配置`FieldRetrievingFactoryBean`来获取这些常量,并将其注入到`Car`类的`brand`属性中: ```xml ...
例如,在上述内容中提到的通过`PropertyPathFactoryBean`和`FieldRetrievingFactoryBean`等工厂bean来间接地从其他bean中获取属性值或静态属性值。 `PropertyPathFactoryBean`用于调用目标对象的getter方法来获取...
- **FieldRetrievingFactoryBean**:注入其他Bean的字段(Field)值,直接访问类或对象的Field。 - **MethodInvokingFactoryBean**:调用指定Bean的普通方法,可以用于初始化操作。 6. **Prototype作用域的Bean...
FieldRetrievingFactoryBean FileCopyUtils FileEditor FileSystemResource FileSystemResourceLoader FileSystemXmlApplicationContext FilterDefinitionFactoryBean FixedLocaleResolver ...
因此,为了配置上的便利性,可以使用FieldRetrievingFactoryBean类来获取静态字段,比如SerializerFeature.DisableCircularReferenceDetect。 此外,文章中提到的代码示例展示了在非Spring MVC环境中如何直接使用...