Spring创建Bean共3种方式
- 自动配置
- JavaConfig
- XML
一. 自动配置
- Component Scan:扫描@Component标注,将其转化为Bean
- Autowired:在IoC容器内的所有bean都可以使用自动装备,@Autowired(required=false)关闭找不到bean的异常。
@ComponentScan在任何类上标注都可以,被标注的类会扫描当前目录及子目录下所有的@Component,生成Bean放在IoC容器中。但是,通常@ComponentScan会被注解在*Config类上。
@Configuration:也是一个Component注解,标注该类是一个JavaConfig,主要用来生成Bean,共三种方式:
- 类标记@ComponentScan
- 类方法标记@Bean
- 上述两类配合使用?
在自动配置中,主要使用@ComponentScan。
该注解是一个@Component注解,被@ContextConfiguration加载。
二. JavaConfig
标注该类是一个JavaConfig,用来生成Bean。
若不采用自动配置,其内部的方法用来生成相关的bean,@Bean打在方法上,表示返回是一个bean。
在使用ComponentScan时,Bean由ComponentScan生成,那时JavaConfig类可以是空的。
在手动写JavaConfig时,依赖注注入有两种方式:
- 通过函数的方式,使用该函数返回的Bean。
- 通过变量的方式,Spring会寻找合适的依赖进行注入。
默认状态下,所有的Bean都是单例的,多次使用相同的方法进行注入只能得到的是相同的实例。
三. XML