@Component和@Bean的区别

  • 作用对象不同:@Component注解作用在类,@Bean注解作用于方法
  • @Component是通过类路径扫描来自动侦测和自动装配到Spring容器中。@Bean通常是我们在标有该注解的方法中定义产生这个bean,@Bean告诉Spring这是个某个类的实例,然后交由Spring容器管理。
  • @Bean注解比@Component注解的自定义性更强,而且很多地方我们只能通过@Bean注解来注册Bean。比如当我们引入第三方库中的类需要装配到Spring容器时,则只能通过@Bean来实现。

将一个类声明为Spring的bean注解

@Component:通用的注解,可标注任意类为Spring组件。如果一个Bean不知道属于哪个层,可以使用 @Component 注解标注。
@Repository:对应持久化即Dao层,主要用于数据库相关操作。
@Service:对应服务层,主要涉及一些复杂的业务逻辑,需要用到Dao层。
@Controller:对应Spring MVC控制层,主要接受用户请求并调用Service层返回数据给前端页面。