使用 @ Repository和 @ 服务的优点是什么?
不要告诉我关于组件扫描等,我期待着一些额外的好处或功能,如果有的话。
如果我不用它会怎样? 我会错过什么?
@Repository注释(在 Spring 2.0中引入)和 @Service注释(在 Spring 2.5中引入)是 @Component注释的专门化。
@Repository
@Service
@Component
在 @Component上使用 @Repository或 @Service的主要优点是,很容易编写一个 AOP 切入点,该切入点的目标是所有用 @Repository注释的类。
此外,专门的注释有助于清楚地划分应用程序层(在标准的3层应用程序中)。
我相信 Spring 在添加这些组件注释时考虑到了两点。
有几个原因:
DataAccessException
如果您是 TDD,那么仔细设计(当然是测试)@Services 将是有用的,因为它们将受益于您定义的所有@Autowired 组件的完全注入。
例如,您可以将您的功能直接实现到@Controller 中,但是在这种情况下,测试将更加困难,并且您需要定义所有的 mock 元素(在 Spring 框架3.1中相当容易,但仍然是“糟糕的设计”)。