转载

@Resource、@Autowired等几个注解的区别

1、@Resource注解和@Autowired的区别

@Autowired注解:是按类型装配依赖对象 ,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false。

@Resource注解:和@Autowired一样,也可以标注在字段或属性的setter方法上,但它 默认按名称装配 。名称可以通过@Resource的name属性指定,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象。

简单点说,就是:@Resources按名字,是JDK的;@Autowired按类型,是Spring的。

2、@Component, @Repository, @Service,@Component, @Repository, @Service的区别

注解 含义
@Component 最普通的组件,可以被注入到spring容器进行管理
@Repository 作用于持久层
@Service 作用于业务逻辑层
@Controller 作用于表现层(spring-mvc的注解)

@Component@Service@Controller@Repository 是spring注解,注解后可以被spring框架所扫描并注入到spring容器来进行管理

@Component 是通用注解,其他三个注解是这个注解的拓展,并且具有了特定的功能

@Repository 注解在持久层中,具有将数据库操作抛出的原生异常翻译转化为spring的持久层异常的功能。

@Controller 层是spring-mvc的注解,具有将请求进行转发,重定向的功能。

@Service 层是业务逻辑层注解,这个注解只是标注该类处于业务逻辑层。

原文  http://www.cnblogs.com/yanghj/p/12885937.html
正文到此结束
Loading...