上一题下一题

@Component、@Service、@Repository注解在容器注册上的共同点与差异

基础版
来源:meituan中级工程师Spring Bean注册Spring组件扫描Spring构造型注解
答案解析

参考回答

从 Spring 容器注册的角度看,@Component、@Service 和 @Repository 的共同点是:它们都可以被组件扫描识别,并注册为 Spring 容器中的 Bean。

@Service 和 @Repository 本质上都是 @Component 的派生注解,所以只要开启了组件扫描,例如使用 @ComponentScan 或 Spring Boot 的启动类扫描,它们都会被扫描成 BeanDefinition,后续按照默认的单例作用域完成实例化、依赖注入和生命周期管理。默认 Bean 名称通常是类名首字母小写,也可以通过注解的 value 属性指定名称。

主要差异在于语义和附加能力:

@Component:通用组件注解,适合无法明确归类到业务层、持久化层等场景的组件。 @Service:表示业务服务层组件,主要用于表达职责和分层语义。在基础容器注册上和 @Component 没有本质区别,Spring 不会仅因为它是 @Service 就赋予特殊的事务或并发能力。 `@Repo

登录后查看完整内容