@Autowired:它是spring提供的。下图可以看到它所在的包。
它是按byType注入的,默认是要依赖的对象必须存在。boolean required() default true; 如果需要允许依赖对象是null,可以设置:@Autowired(required=false)
如果我们想@Autowired按名称装配,可以结合**@Qualifier**注解一起使用
@Resource 是由J2EE提供 在 javax.annotation包中!@Resource默认按byName自动注入,也提供按照byType 注入
当spring的xml配置文件中的bean配置了name或id时,如,那么可以在要注入的属性上加@Resource(name=“user_id”)或者@Resource(name=“user_name”)都可以
扩展:
byType 方式自动注入
使用 byType 方式自动注入,要求:配置文件中被调用者 bean 的 class 属性指定的类,要与代码中调用者 Bean 类的某域属性(对象属性)类型同源。即要么相同,要么有 is-a 关系(子类,或是实现类)。但这样的同源的被调用 bean 只能有一个。多于一个,容器就不知该匹配哪一个
了。
byName 方式自动注入
当配置文件中被调用者 Bean 的 id 值与代码中调用者 Bean 类的属性名相同时,可使用byName 方式,让容器自动将被调用者 Bean 注入给调用者 Bean。容器是通过调用者的 Bean类的属性名与配置文件的被调用者 bean 的 id 进行比较而实现自动注入的。