Spring 2.5引入了进一步的原型注释:@Component、@Service和@Controller。@Component作为任何Spring托管组件的通用原型;而@Repostory、@Service和@Controller作为@Component的特化,用于更具体的用例(例如,分别在持久化层、服务层和表示层)。这意味着你可以用@Component注释你的组件类,但是通过使用@Reposary、@Service或@Controller注释它们,你的类更适合通过工具处理或与方面关联。例如,这些原型注释是切入点的理想目标。当然,@Reposential、@Service和@Controller也有可能在Spring Framework的未来版本中携带额外的语义学。因此,如果您在服务层使用@Component或@Service之间做出决定,@Service显然是更好的选择。类似地,如上所述,@Reposential已经被支持作为持久层中自动异常转换的标记。
@Component – Indicates a auto scan component.@Repository – Indicates DAO component in the persistence layer.@Service – Indicates a Service component in the business layer.@Controller – Indicates a controller component in the presentation layer.
1. **@Repository** - Automatic exception translation in your persistence layer.2. **@Service** - It indicates that the annotated class is providing a business service to other layers within the application.
表示带注释的类是最初定义的“Service”由领域驱动设计(Evans,2003)作为“作为在模型中独立存在的接口,没有封装状态。"也可以表明一个类是一个“Business Service Facade”(在核心J2EE模式意义),或类似的东西。这个注释是一个通用刻板印象和个别团队可能会缩小他们的语义学和适当的使用。
@RestController- Declare at controller level.@Controller – Declare at controller level.@Component – Declare at Bean/entity level.@Repository – Declare at DAO level.@Service – Declare at BO level.