Java 如何在Spring2.5.x中使用原型注释?

Java 如何在Spring2.5.x中使用原型注释?,java,spring,annotations,aspects,stereotype,Java,Spring,Annotations,Aspects,Stereotype,当移动到Spring2.5.x时,我发现它添加了更多的原型注释(在2.0版本的@Repository之上):@Component、@Service和@Controller。你如何使用它们?您是依靠隐式Spring支持还是定义定制的特定于原型的函数/方面/特性?或者它主要用于标记bean(编译时、概念等)?2.5中的以下原型注释可用于Spring MVC应用程序中,作为XML连接bean的替代方法: @存储库-用于DAOBeans-允许 您需要在以下情况下引发DataAccessExceptio

当移动到Spring2.5.x时,我发现它添加了更多的原型注释(在2.0版本的@Repository之上):@Component、@Service和@Controller。你如何使用它们?您是依靠隐式Spring支持还是定义定制的特定于原型的函数/方面/特性?或者它主要用于标记bean(编译时、概念等)?

2.5中的以下原型注释可用于Spring MVC应用程序中,作为XML连接bean的替代方法:

  • @存储库-用于DAOBeans-允许 您需要在以下情况下引发DataAccessException: 数据源不可用

  • @服务-用于业务bean- 是相当简单的豆子,有一些 设置默认保留策略

  • @控制器-用于servlet- 允许您设置页面请求 映射等

此外,还引入了通用的第四个注释:@Component。所有MVC注释都是这一注释的专门化,您甚至可以自己使用@Component,尽管在Spring MVC中这样做,您将不会使用添加到更高级别注释中的任何未来优化/功能。您还可以扩展@Component来创建自己的自定义原型

下面是一个MVC注释的快速示例。。。首先,数据访问对象:

@Repository
public class DatabaseDAO {
    @Autowired
    private SimpleJdbcTemplate jdbcTemplate;

    public List<String> getAllRecords() {
        return jdbcTemplate.queryForObject("select record from my_table", List.class);
    }
}

我发现,除了在xml上添加标记外,还可以对原型注释进行广泛的概述。

别忘了在xml上添加此标记

    <context:component-scan  base-package="com.example.beans"/> 

注释不再是MVC特有的。有关更多信息,请参阅。使用@Component注释或其规范的一个示例是带有监视支持的。有关示例,请参见。此监视支持是通过加载时AspectJ weaving添加的


总之,在Spring容器启动后的运行时,或者在AspectJ编织的编译/加载时,可以在不同的设置中使用注释。

各种原型注释的语义都记录在javadoc中。您认为新的(2.5)版本原型仅适用于Spring MVC?这三个高级注释可视为MVC特有的。您可以将它们重新用于其他目的,但如果在将来的版本中更改它们,您可能会遇到升级问题@组件是通用的bean连接注释,可以很容易地在MVC领域之外扩展和使用。@Component注释不是特定于MVC的,但是OP问题中列出的其他注释都是特定于MVC的。seanhodges:No、@Repository、@Controller和@Service都属于org.springframework.context模块@也是@Component专门化的端点是SpringWS特定的,是org.springframework.WS.java5模块的一部分。Spring3参考文档中的一个片段(不是MVC特有的):在Spring2.0和更高版本中,@Repository注释是任何满足存储库角色或原型(也称为数据访问对象或DAO)的类的标记。该标记的用途之一是自动翻译异常。
@Controller("/index.html")
public class IndexController {
    @Autowired
    private DataService dataService;

    @RequestMapping(method = RequestMethod.GET)
    public String doGet(ModelMap modelMap) {
        modelMap.put(dataService.getDataAsList());
        return "index";
    }
}
    <context:component-scan  base-package="com.example.beans"/>