@Autowired是Spring提供,需要导入包org.springframework.beans.factory.annotation.Autowired; @Resource是由J2EE提供,需要包javax.annotation.Resource,需要JDK1.6及以上。
@Autowired只按照byType 注入,依赖的对象必须存在,如果允许为null值,需要加required=false,即@AutoWired(required=false);若要通过名称装配可以配合@Qualifier注解; @Resource默认按byName自动注入,也提供按照byType 注入。@Resource有两个中重要的属性:name和type。 ①如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常。 ②如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常。 ③如果指定了type,则从上下文中找到类似匹配的唯一bean进行装配,找不到或是找到多个,都会抛出异常。 ④如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配。
ps:以上来源于网络,整理下来仅供自己日后学习