Spring 注解总结

来源:互联网 发布:java multipart 编辑:程序博客网 时间:2024/06/07 02:57

【声明】

内容源自网络整理而成,供自己复习用,多谢!


【正文】

@Service    用于标注业务层组件
@Controller 用于标注控制层组件,定义一个 Controller 控制器
@Repository 用于标注数据访问组件,即DAO组件

@Component  泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>

@Transactional

在service类前加上@Transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。

@RequestMapping
@RequestMapping是一种通过匹配URL路径来访问相应页面的
RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
RequestMapping注解有六个属性,下面我们把她分成三类进行说明。
1、 value, method;
value:     指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);
method:  指定请求的method类型, GET、POST、PUT、DELETE等;

接收带参数的请求,接收用户请求参数 值
@RequestMapping("/start/{name}")//这个name  随便  啥都可以
说明:
http://endual.iteye.com/blog/1740350
例:
@RequestMapping(value={"/list"})


@Autowired  通过 @Autowired的使用来消除 set ,get方法。


@Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定
@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入。
例:
@Resource(name="uPHisTransService")
private UPHisTransService<UPHisTrans, Long> uPHisTransService;


@Qualifier
Spring 允许我们通过 @Qualifier 注释指定注入 Bean 的名称,这样歧义就消除了,可以通过下面的方法解决异常。
@Qualifier("XXX") 中的 XX是 Bean 的名称,所以 @Autowired 和 @Qualifier 结合使用时,自动注入的策略就从 byType 转变成 byName 了
例:
@Autowired() @Qualifier("baseDao")     
private BaseDao baseDao;


@Scope("prototype")
如果ACTION中不@Scope("prototype"),有可能报找不到XXXACTION的错误!写上这个就表示每次请求都重新创建一个ACTION,
与SINGALON对应,俗称“多例”。


@Required
The @Required annotation applies to bean property setter methods


@RequestBody
该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;


@ResponseBody
  该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
使用时机:
      返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;
      http://blog.csdn.net/kobejayandy/article/details/12690555


【问题】

@Autowired()  与 @Resource 区别?

1.

@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上;

区别:

@Autowired byType, @Resource byName

2.

@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:

@Autowired() @Qualifier("baseDao")     private BaseDao baseDao;


3.

@Resource(这个注解属于J2EE的),默认安照名称进行装配,名称可以通过name属性进行指定, 
如果没有指定name属性,当注解写在字段上时,默认取字段名进行按照名称查找,如果注解写在setter方法上默认取属性名进行装配。 当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。

@Resource(name="baseDao")private BaseDao baseDao;

推荐:

用 @Resource注解在字段上,且这个注解是属于J2EE的,减少了与spring的耦合。最重要的这样代码看起就比较优雅。

0 0
原创粉丝点击