06
2020
05

@Component和@Bean的区别是什么

1.作用对象不同。@Component注解作用于类,而@Bean注解作用于方法。


2.@Component注解通常是通过类路径扫描来自动侦测以及自动装配到Spring容器中(我们可以使用@ComponentScan注解定义要扫描的路径)。@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.yanggb.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();

    }

}

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。