1.Spring中的bean是线程安全的吗?
答:Spring的bean是否线程安全与Spring无关,因为Spring只承担了创建和管理bean的职责,并没有对bean进行任何修改。
2.IOC容器注入Bean的方式
答:
- @Bean 单独导入一个类 在配置类中完成
- @ComponentScan 包扫描 (默认扫描 @Controller、@Service、@Repostory、@Component)
但是也可以自定义扫描策略 通过includeFilters属性引入自定义的TypeFilter
注解使用:
自定义方法实现: - @Import 快速给容器导入Bean的方式 (导入的是全类名)
a.@Import 直接导入参数
b.实现ImportSelector自定义实现规则
c.实现ImportBeanDefinitionRegistrar自定义实现规则 - FactorBean 把需要注册的对象封装为FactorBean
a.FactorBean 负责将Bean注册到IOC容器的Bean
b.BeanFactor 从IOC容器中获取Bean对象 - @Resource 和 @Autowire 的区别?
- IOC的基本流程?
a. 读取配置文件
b. 解析配置文件,并封装成BeanDefinition
c. 把BeanDefinition对应的实例放入到容器进行缓存 - DI的基本流程?
a. 循环读取BeanDefinition的缓存信息(IOC)
b. 调用getBean()方法创建对象实例
c. 将创建好的对象实例包装为BeanWrapper对象
d. 将BeanWrapper对象缓存到IOC容器
e. 循环IOC容器执行依赖注入