答案 0 :(得分:72)
有几个原因:
@Repository
注释带有一些额外的功能:它会导致例外为wrapped up as DataAccessException
s。@Service
注释may gain additional semantics in the future但尚未发生...... 答案 1 :(得分:65)
@Repository
注释(在Spring 2.0中引入)和@Service
注释(在Spring 2.5中引入)是@Component
注释的特化。
使用@Repository
或@Service
优于@Component
的主要优点是,编写AOP切入点很容易,例如,所有使用@Repository
注释的类都会定位。
此外,专门的注释有助于清楚地划分应用层(在标准的3层应用中)。
答案 2 :(得分:5)
我相信Spring在添加这些组件注释时会想到两件事。
答案 3 :(得分:3)
如果你TDD仔细设计(当然是测试)@Services是有用的,因为它们将有益于完全注入你定义的所有@Autowired组件。
例如,你可以直接在@Controller中实现你的功能,但是在这种情况下测试会更难,你需要定义所有的mock元素(在springframework 3.1中相当容易,但仍然是“糟糕的设计”)。