一、@AutoWired ( spring 的注解 )自动注入
/** * @Autowired: * 默认按照 Student 类型去容器中找对应的组件:applicationContext.getBean(Student.class); * 如果找到多个相同类型的组件,再将 student 这个属性名作为 id 去容器中找对应组件 applicationContext.getBean("student"); * required = false,容器中如果没有该组件,就为 null * @Qualifier: * 指定需要装配的组件 id,而不是使用 student 这个属性名作为 id */ @Qualifier("student2") @Autowired(required = false) private Student student;
二、@Resource ( JSR250 规范的注解 )
/** * @Resource: * 默认按照组件名 student 作为 id 去容器中找对应的属性 * 使用 name = "student2" 指定 id
* 没有 required = false 功能 */ @Resource(name = "student2") private Student student;
三、@Inject ( JSR330 规范 ) 和 @AutoWired 功能一样。但是没有 required = false 功能
导入 jar
<!-- https://mvnrepository.com/artifact/javax.inject/javax.inject --> <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> <version>1</version> </dependency>
@Inject private Student student;