使用@Component,@Repository,@Service和@Controller注释就绪并启用自动组件扫描后,spring将自动将bean导入到容器中,因此您无需明确定义它们以自动装入它们。
@Component
的@Component注释标记的Java类作为豆所以弹簧的组件的扫描机构可以把它捡起来,并将其拉入应用程序上下文。要使用此批注,应用它在类,如下:
@Repository
虽然上面使用@Component是不够好,但你可以用更合适的注解,专门为DAO的即@Repository提供了额外的好处注解。 @Repository注释是具有类似用法和功能的@Component注释的特化。除了将DAO导入到DI容器之外,它还会使未经检查的异常(从DAO方法抛出)有资格转换为Spring DataAccessException。
@Service
的@Service注解也是成分注释的特殊化。它目前不提供任何超过@Component注释的额外行为,但是在服务层类中使用@Service over @Component是个好主意,因为它更好地指定了intent。此外,工具支持和其他行为将来可能会依赖它。
@Controller
注解@Controller类标记为一个和Spring Web MVC控制器。它也是一个@Component特殊化,所以用它标记的bean会自动导入到DI容器中。将@Controller注释添加到类时,可以使用另一个注释,即@RequestMapping;将URL映射到类的实例方法。
在您的方案中,无论您使用@Service还是@Repository,它对应用程序流程都没有影响,应用程序将以他们有权自动装配的方式工作。但标准的做法是使用@Repository进行dao类。
http://stackoverflow.com/questions/35449808/what-will-happen-if-we-interchange-service-and-repository-annotation-in-the-sp – soorapadman