译:@Autowired
2017-10-27 本文已影响4人
笑楔信
https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/annotation/Autowired.html
公共接口:Autowired
用来标记一个构造函数,变量,setter方法或者配置方法,这样他们就会被Spring的依赖注入器进行自动装配了。
标记一个构造函数时,任何给定的bean中最多只能有一个构造函数能够执行这个注解,表明作为Spring的一个bean时需要用这个构造函数进行装配。这样的构造函数不需要加public。
标记一个变量时,当bean构造好后这个变量就会马上注入,先于任何的配置方法触发,这些配置型的变量也不需要加public。
标记一个方法时,这个配置方法可以取任意的名字和任意个数的参数;这些参数将被Spring容器中一个符合的bean自动装配。Bean属性的setter方法实际上仅仅是一个普通的配置方法的特殊实例。这样的配置方法也不需要加public。
如果方法中存在多个参数,required可以应用于每一个参数。
万一标记的依赖类型是一个集合或者映射,容器将会自动装配所有符合声明值类型的bean。如果是一个映射,键必须声明为String类型并且被赋给对应的bean。
需要注意的是,实际上注入是通过一个BeanPostProcessor类,反之就是你不能用@autowired来把引用注入到BeanPostProcessor或者BeanFactoryPostProcessor类型。请查询javaDoc文档中AutowiredAnnotationBeanPostProcessor类型,这个类型作为默认类型,负责检查autowired注解的存在。