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

豆豆网   技术应用频道   2008年01月10日  【字号: 收藏本文

内容摘要:本文是探讨这些新特性的3篇系列文章中的第一篇。本文将主要关注于简化的配置和在Spring应用程序上下文(application context)核心新增的基于注解的功能。查看“samples/petclinic”目录下的“readme.txt”文件可以得知关于如何构建和部署PetClinic应用程序。

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

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

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

  当@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也变得愈发简练:

来源:InfoQ中文站    作者:沙晓兰    责编:豆豆技术应用

正在加载评论...