注册spring bean的方法总结
- 在类上加@Component、@Service、@Named等注解。
- 在类上加@Configuration注解,类成员方法上加@Bean。
- 在spring.factories里配置EnableAutoConfiguration对应的类,在类方法上定义@Bean。应该算是@Configuration+@Bean的特化处理吧。EnableAutoConfiguration能根据应用程序的依赖和类路径自动配置所需的bean 。
- 在BeanFactoryPostProcessor里用registerSingleton注册bean单例。
- 在BeanDefinitionRegistryPostProcessor 里用registerBeanDefinition注册新的bean定义,之后spring框架就会根据bean定义注册bean实例。
后两种是动态注册bean的方法。
所以,如果我们在启动spring的时候发现因为bean缺失而启动失败,要么是自己的代码里没加@Component或@Configuration+@Bean注解,要么是少了三方库,最好是能与已成功的例子做一下依赖库的对比,单纯靠debug一般不太好看出来,毕竟bean注册的入口比较多。