Spring依赖注⼊—@Resource注解使⽤
1.@Autowired默认按类型装配(这个注解是属于spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使⽤名称装配可以结合@Qualifier注解进⾏使⽤,如下:
@Autowired()
@Qualifier("baseDao")
private BaseDao baseDao;
2.@Resource(这个注解属于J2EE的),分为以下⼏种情况
  1)默认安照名称进⾏装配,名称可以通过name属性进⾏指定
  如:
1  @Resource(name="student")    //这⾥的student是指bean的ID
2    private Student student;
  2)如果没有指定name属性,当注解写在字段上时,默认取字段名进⾏按照名称查
   如:
@Resource()         //未指定name,默认取将要注⼊属性的字段名,如下Student是类类型,student是属性名也就是字段名
private Student student;
  3)如果注解写在setter⽅法上默认取属性名进⾏装配。
  如:
@Resource(name="student")
public void setStudent(Student student) {
this.student = student;
}
  4)当不到与名称匹配的bean时才按照类型进⾏装配。
   如:
  java代码如下:
@Resource()
private Student student;
  l如下:
<bean id="student1" class="com.spring.chapter8.Student">
<property name="name" value="张三"></property>
<property name="age" value="23"></property>
</bean>
在l⽂件中并没有student  的bean。当不到与名称匹配的bean时才按照类型进⾏装配。我们运⾏也会成功。
但是需要注意的是,如果name属性⼀旦指定,就只会按照名称进⾏装配。否则会报错
运⾏结果如下:
resource和autowired注解的区别l如下:
 java代码如下:
运⾏结果:
总结:
  1.@Resource注解既可以⽤在setter中也可以⽤在属性当中,当Resource指定属性name名字时,就只会按照指定的name去查bean,否则会报错。
  2.当注解写在字段上时,@Resource不指定name,默认取字段名进⾏按照名称查,如果注解写在setter⽅法上默认取属性名进⾏装配。如果最后都不到与名称匹配的bean时才按照类型进⾏装配。我们运⾏也会成功 
3.推荐使⽤:@Resource注解在字段上,且这个注解是属于J2EE的,减少了与spring的耦合。最重要的这样代码看起就⽐较优雅。