Spring——组件注册方法总结
1、通过配置类的包扫描
给配置类添加@ComponentScan,通过value指定要扫描的包+给组件标注注解(@Component ,@Service或 @Controller等等)
2、通过@Bean在配置类中加入组件
特点:使用第三方组件时可以不用更改第三方代码。
3、@Import
1)在配置类中使用@Import可以直接导入组件,容器会自动注册,id默认全类名
2)ImportSelect:实现这个接口,通过接口提供的selectImports方法返回并注册全类名数组中的类,再给容器中注册ImportSelect接口实现类即可
3)ImportBeanDefinitionRegistrar:实现这个接口,通过接口中的registerBeanDefinitions方法注册类并可自定义类名,最后给容器中注册ImportBeanDefinitionRegistrar接口实现类
4、实现FactoryBean接口
实现以下三个方法,最后给容器中注册FactoryBean接口实现类
T getObject() throws Exception;
Class<?> getObjectType();
boolean isSingleton();
上面是源码中的注释,举个例子:
容器中注册进FactoryBean接口实现类后,获取它并getclass,得出的并不会是实现类,而是返回下图中的T泛型。即bean的名字是XXXFactoryBean(实现类的名字),但实际是我们自定义工厂所管理的类。