Spring中@Component与@Bean的区别

Even though both of them refer to Spring managed beans, each serves a different purpose.

@Component and its specializations (@Controller, @Service and @Repository) allow for auto-detection using classpath scanning.

@Bean on the other hand can only be used to explicitly declare a single bean in a configuration class.

可知,其共同点

                       都是注册bean到Spring容器中。

            不同点

                         @Component(@Controller、@Service、@Repository)通常是通过类路径扫描来自动侦测以及自动装配到                                  Spring容器中。 表明一个类会作为组件类,并告知Spring要为这个类创建bean。

                        @Bean注解通常是在配置类中,标有该注解的方法中定义产生这个bean的逻辑。告诉Spring这个方法将会返回一个                          对象,这个对象要注册为Spring应用上下文中的bean。通常方法体中包含了最终产生bean实例的逻辑。

@Controller

//在这里也可以用Component,Controller,Service,Repository
//都可以起到相同的作用。

@RequestMapping(″/XXX/controller1″)
public class XXXController {
    .....
}

而@Bean的用途则更加灵活

当我们引用第三方库中的类需要装配到Spring容器时,则只能通过@Bean来实现

public class WireThirdLibClass {
    @Bean
    public ThirdLibClass getThirdLibClass() {
        return new ThirdLibClass();
    }
}
@Bean
public OneService getService(status) {
    case (status)  {
        when 1:
                return new serviceImpl1();
        when 2:
                return new serviceImpl2();
        when 3:
                return new serviceImpl3();
    }
}

参考:https://www.jianshu.com/p/3fbfbb843b63

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值