快速业务通道

Spring 2.5的新特性:配置简化和基于注解的功能 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
甚至不需要一个显式的字符串值,在没有提供任何值的情况下,域名将被当作默认值。

@Resource private DataSource dataSource; // inject the bean named ''dataSource''

该方式被应用到setter方法的时候,默认名是从相应的属性衍生出来,换句话说,命名为''setDataSource''的方法被用来处理名为''dataSource''的属性。

private DataSource dataSource; @Resource public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; }

Spring 2.5的新特性:配置简化和基于注解的功能(2)

时间:2011-03-05 InfoQ中文站 沙晓兰

当@Resource没有显式提供名字的时候,如果根据默认名字找不到对应的Spring管理对象,注入机制会回滚至类型匹配(type-match)。如果刚好只有一个Spring管理对象符合该依赖的类型,那么它会被注入。通过设置CommonAnnotationBeanPostProcessor 的‘fallbackToDefaultTypeMatch’属性为“false”(默认值是“true”)可以禁用这一特性。

class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"> name="fallbackToDefaultTypeMatch" value="false"/>

正如上文所提到的,在解析标有@Resource注解的依赖时,Spring支持JNDI-lookup。如若要强制对所有使用@Resource注解的依赖进行JNDI lookup,那也只要将CommonAnnotationBeanPostProcessor的''alwaysUseJndiLookup'' 标识设置为true就可以了(默认值是false)。

class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"> name="alwaysUseJndiLookup" value="true"/>

另一个选择是,激活指定为‘resource-ref-mappings’的依据全局JNDI名的查找,在@Resource注解内提供‘mappedName’属性。即使目标对象实际上是一个JNDI资源,仍然推荐引入一个Spring管理对象,这样可以提供一个间接层并且因此降低耦合程度。自Spring2.0开始添加命名空间以来,定义一个委托Spring处理JNDI lookup的bean也变得愈发简练:

这个方法的优点在于间接层带来了巨大的部署弹性。比如说,一个单独的系统测试环境应该不再需要JNDI注册。在这种情况下,在系统测试配置中可以提供如下的bean定义:

id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" p:driverClassName="${jdbc.driverClassName}" p:url="${jdbc.url}" p:username="${jdbc.username}" p:password="${jdbc.password}"/>

顺便提一下,上面的例子中,实际的JDBC连接属性从一个属性文件(properties file)解析而来,在这个属性文件里,关键字与提供的${占位符}互相对应,这需要注册一个名为PropertyPlaceholderConfigurer的BeanFactoryPostProcessor实现来完成。这是具体化那些属性(通常是针对特定环境的属性)常用的技术,这些属性可能比其他配置修改得更为频繁。

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> name="location" value="classpath:jdbc.properties"/>

Srping2.5中新加入了‘context’命名空间,这个命名空间让我们能够得到更为简洁的方式来实现属性占位符(property placeholder)的配置:

<context:property-placeholder location="classpath:jdbc.properties"/>

生命周期注解:@PostConstruct和@PreDestroy

@PostConstruct 和@PreDestroy注解分别用来触发Spring的初始化和

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号