3Java后端

@Component VS @Bean

2019-09-24  本文已影响0人  happyJared
  1. 作用对象不同: @Component 注解作用于类,而 @Bean 注解作用于方法;
  2. @Component 通常是通过类路径扫描来自动侦测,以及自动装配到 Spring 容器中(可以使用 @ComponentScan注解定义要扫描的路径,从中找出标识了需要装配的类,并自动装配到 Spring 的 bean 容器中)。@Bean 注解通常是在标有该注解的方法中定义产生这个 bean,@Bean告诉了 Spring 这是某个类的示例,当需要用到它的时候还给我;
  3. @Bean 注解比 Component 注解的自定义性更强,而且很多地方我们只能通过 @Bean 注解来注册 bean。比如当我们引用第三方库中的类需要装配到 Spring容器时,则只能通过 @Bean来实现。

@Bean 注解使用示例:

@Configuration
public class AppConfig {

    @Bean
    public TransferService transferService() {
        return new TransferServiceImpl();
    }

}

上面的代码相当于下面的 xml 配置

<beans>
    <bean id="transferService" class="com.xxx.TransferServiceImpl"/>
</beans>

下面这个例子是通过 @Component 无法实现的。

@Bean
public OneService getService(status) {
    case (status)  {
        when 1:
                return new serviceImpl1();
        when 2:
                return new serviceImpl2();
        when 3:
                return new serviceImpl3();
    }
}
上一篇下一篇

猜你喜欢

热点阅读