.参考文章:https://www.jianshu.com/p/3fbfbb843b63
1.注解的作用
1)@Component注解表明一个类会作为组件类,并告知Spring要为这个类创建bean,@Component(@Controller、@Service、@Repository)通常是通过类路径扫描来自动侦测以及自动装配到Spring容器中。
2)@Bean注解告诉Spring这个方法将会返回一个对象,这个对象要注册为Spring应用上下文中的bean。通常方法体中包含了最终产生bean实例的逻辑,并且实例名就是方法名。
2.举例
1).@Component
eg1:
@Component
public class PushMsgQuartzJob extends QuartzJobBean {}
eg2:
@Controller
//在这里用Component,Controller,Service,Repository都可以起到相同的作用。
@RequestMapping(″/web/controller1″)
public class WebController {
.....
}
2) 而@Bean的用途则更加灵活
当我们引用第三方库中的类需要装配到Spring容器时,则只能通过@Bean来实现,如下代码段,对象名称是userExtendService
@Bean
public UserExtendService userExtendService() {
UserExtendServiceImpl userExtendService = new UserExtendServiceImpl();
userExtendService.setConfig(config());
userExtendService.setAMSService(amsService());
userExtendService.setRestClient(restClient());
return userExtendService;
}
总结:@Component和@Bean都是用来注册Bean并装配到Spring容器中,但是Bean比Component的自定义性更强。可以实现一些Component实现不了的自定义加载类