@Resource:
声明级别
成员变量
set方法
注入
默认按照成员变量名 执行注入 如果名称未找到 按照类型注入(class)
如果声明name 属性值 按照名称执行注入 如果未找到 注入失败!!!
@AutoWired
声明级别:
成员变量
set 方法
注入
默认按照类型注入(class) 与成员变量名无关
区别:@Autowiredmo默认按bean的类型匹配,可以修改,按名称匹配,和@Qualifier配合使用
@Resource默认按照名称进行装配,名称可以通过name属性进行指导,如果没有指定name属性,当注解写在字段上时,默认取字段名进行匹配注入,如果注解写在setter方法上,则默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意,如果name属性一旦指定,就只能按照名称进行装配
这两个是自动注入的常用注解,自动注入也叫自动装配,这两个注解是是放在属性字段或者set方法上的。而下面的讲的自动扫描它的注解是放在类的上面。这点得注意。
配置一个扫描器扫描包的范围,不代表该范围下所有bean都能被实例化,需要借助注解标识配合使用,
dao里面class上加上注解@Repository;service注解为@Service;controller注解为@Controller
xml中的标签:<context component-scan base-package=”扫描的范围”/>
@Service 业务逻辑层组件 的class上使用
@Controller 控制层组件(controller) 的class上使用
@Repository 数据访问层组件,即Dao组件的class上使用
@Component 泛指组件,当组件不知道怎么归类的时候,我们可以使用这个注解进行标注。