- XML方式,繁琐,新项目并不提倡
- java显示配置
- 组件扫描+自动装配(约定由于配置)
通过注解完成装配
声明组件注解:@Component,@Service,@Repository,@Bean(用在方法上).........
组件扫描:@ComponentScan 该注解默认情况下之扫描类所在包以及子包中组件,通过使用basePackages和basePackageClasses属性指定需要扫描的包
注解完成依赖注入
@Autowired:默认根据类型进行注入,通过跟@Qualifier注解一起使用完成根据名称注入。
@Resource:默认根据名称注入,可以设置name和type属性来实现根据类型或根据名称来完成注入
自动装配的歧义性
默认情况下IOC容器中类型相同或者名称相同的多个bean时,自动装配将会失败并抛出异常。可以使用@Qualifier注解,@Primary注解来解决注入歧义性。在不存在需要注入的bean的情况下也会出现失败并抛出异常的情况,这种情况下可以使用@Autowired注解的required属性来解决。但是这种情况下可能出现空指针异常。