【发布时间】:2014-10-12 13:32:23
【问题描述】:
【问题讨论】:
标签: spring
【问题讨论】:
标签: spring
有几个原因:
@Repository 注释带有一些附加功能:它会导致异常为 wrapped up as DataAccessExceptions。@Service 注释 may gain additional semantics in the future 但还没有发生……【讨论】:
DataAccessException,就像文档说的那样。为什么要问?
@Repository 注释(在 Spring 2.0 中引入)和 @Service 注释(在 Spring 2.5 中引入)是 @Component 注释的特化。
使用@Repository 或@Service 而不是@Component 的主要优点是它很容易编写一个AOP 切入点,例如,所有用@Repository 注释的类。
此外,专门的注释有助于清楚地划分应用层(在标准的 3 层应用中)。
我相信 Spring 在添加这些 Component 注释时考虑了两件事。
【讨论】:
如果您TDD,仔细设计(当然是测试)@Services 会很有用,因为它们将受益于您定义的所有@Autowired 组件的完全注入。
例如,您可以将功能直接实现到 @Controller 中,但在这种情况下,测试会更加困难,并且您需要定义所有模拟元素(在 springframework 3.1 中非常容易,但仍然是“糟糕的设计”)。
【讨论】: