前言
在SpringBoot中Bean的管理是一个相当重要的知识,只有知道如何将类注入到ioc容器成为一个bean,才能更好的深入学习
Bean扫描
在Spring框架中有两种方式可以扫描:
- 标签:<context:component-scan base-package=“”/>
- 注解:@ComponentScan(basePackages=“”)
为什么没有写上面的却可以扫描
- 因为@SpringBootApplication注解,这个注解包含@ComponentScan
扫描规则:默认扫描当前包及其子包
可以看到@SpringBootApplication注解包含了@ComponentScan注解
Bean注册
自定义的Bean
对于自定义的bean,我们直接使用Spring提供的注解及衍生注解就可以了,一共有四个
- @Componenet
- @Controller
- @Service
- @Repository(使用较少)
这几个注解十分常用,这里不过多赘述
第三方Bean
1.@Bean
使用这个注解只需在配置类里面提供一个方法,方法return一个需要注入的对象即可,因为下一个方法也需要这个注解,这里只提供一个例子
@Configuration
public class CommonConfig {
@Bean
public User province(){
return new User();
}
}
2.@Import
这个注解可以一次导入多个配置类,一个配置类里面会有多个Bean,所以这个注解很方便,是一个常用注解,并且在源码里很多地方出现,非常重要,接下来我们来看一下这个注解的两种使用方式
导入配置类
先创建两个类User,Shop提供基本属性和get、set等方法用于测试,创建一个配置类,用于注入Bean
注意我的配置类并没有在主程序的包下创建
编写配置类
使用@Import在主程序中导入,并测试
结果:和我们注入的Bean一样
导入ImportSelector接口实现类
我们在提供一个类,并实现ImportSelector接口,重写里面的方法
我们将这个字符串数组里面换成我们刚才的配置类的全类名
更改主程序@Import注解的导入类,并运行
总结
这次我们学习了Bean的有关知识,其中@Import注解非常重要,是被经常使用的。
第二种实现ImportSelector接口的方式用的非常多,我们可以想想,在框架里面有那么多的配置类需要注入,那么肯定是以文件的方式存储,然后读取文件里面的全类名,变成字符串数组的形式,所以这个方法是重点,一定要掌握