已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Spring的注解一、 spring注解1、Autowired注入注解Autowired可以对成员变量、方法和构造函数进行标注,来完成自动装工作。Autowired的标注位置不同,它们都会在Spring在初始化这个bean时,自动装配这个属性。Autowired是根据类型进行自动装配的。例如,如果当Spring上下文中存在不止一个UserDao类型的bean时,就会抛出BeanCreationException异常。如果Spring上下文中不存在UserDao类型的bean,也会抛出BeanCreationException异常。我们可以使用Qualifier配合Autowired来解决这些问题。1. publicclassTestController2.3. Autowired4. Qualifier(“userDao”)5. Private UserService userService;6.7. RequestMapping(/showView)8. publicModelAndViewshowView()9. ModelAndViewmodelAndView=newModelAndView();10. modelAndView.setViewName(viewName);11. modelAndView.addObject(属性名称,属性值);12. returnmodelAndView; 13. 14. 2、Resource注入注解JSR-250标准注解,推荐使用它来代替Spring专有的Autowired注解。Resource的作用相当于Autowired,只不过Autowired按byType自动注入,而Resource默认按byName自动注入罢了。Resource有两个属性是比较重要的,分别是name和type,Spring将 Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。3、Component注解 (不推荐使用)只需要在对应的类上加上一个Component注解,就将该类定义为一个Bean了。Spring还提供了更加细化的注解形式:Repository、Service、Controller,它们分别对应存储层Bean,业务层Bean,和展示层Bean。在Spring版本(2.5)中,这些注解与Component的语义是一样的,完全通用,在Spring以后的版本中可能会给它们追加更多的语义。所以,我们推荐使用Repository、Service、Controller来替代Component。4、Controller控制层注解通过controller标注即可将class定义为一个controller类, Spring的Controller是Singleton的。这就意味着会被多个请求线程共享。因此,我们将控制器设计成无状态类。1. Controller2. RequestMapping(/test)3. publicclassTestController4.5. RequestMapping(/showView)6. publicModelAndViewshowView()7. ModelAndViewmodelAndView=newModelAndView();8. modelAndView.setViewName(viewName);9. modelAndView.addObject(属性名称,属性值);10. returnmodelAndView;11. 12. 5、Service业务层注解通过service标注即可将class定义为一个service类,比如在一个Student实现类上加上Service(student),括号里面就是给实例化后的Student对象取的名字。这是在你一个接口有多个实现类的情况下区分实现类的方式。比如Student实现了Person接口,在你的controller里面Autowired Person时,假如这时Person还有另一个实现类User,为了确定实例化Student还是User, Service括号里面的名称就有用了。1. Autowired2. Qualifier(student)3. private Person person;这样就确定实例化了一个Person指向一个Student对象。6、Repository持久层注解通过repository注解标注持久层。注解括号内是当前类实例化后的对象名称,可以省略,默认值为当前类名(首字母小写)。1. Repository(periodDao)2. public class PeriodDaoImpl implements PeriodDao3. 4. 7、 RequestMapping注解表示请求需要匹配的路径,协议。参数说明:value表示需要匹配的url。method表示所需处理请求的http 协议(如get,post,put,delete等),可选值为RequestMethod这个enuparams格式为”paramname=paramvalue” 或 “paramname!=paramvalue”。 表示参数必须等于某值,或者不等于才进入此映射方法。不填写的时候表明不限制headers用来限定对应的reqeust请求的headers中必须包括的内容,例如headers=Connection=keep-alive, 表示请求头中的connection的值必须为keep-alive。8、RequestBody注解在参数之前加入RequestBody注解。用来将指定的客户端发送过来的请求参数的数据格式转换成java实体1. RequestMapping(value=save,method=RequestMethod.POST )2. ResponseBody3. public Map save(RequestBody User user ) 4. String name = user.getName();5. 6. 9、ResponseStatus注解返回一个指定的http response状态码。1. RequestMapping(/responsestatus)2. ResponseStatus(value=HttpStatus.BAD_REQUEST) 3. public void responseStatusTest() 4. 5. 10、ResponseBody注解如果这个方法定义了ResponseBody注解。那么会把返回值转换成这个数据格式,输出给客户端1. RequestMapping(“save”) 2. ResponseBody 3. public String userSave(RequestBody JSONObject reqJson) 4. 5. 11、Transaction事务注解要使用Spring3事务管理,要在applicationContext.xml增加事务管理器相关配置信息Transactional注解可以标注在类和方法上在方法上的Transactional注解会覆盖掉类上的Transactional。Transactional的属性:属性名类型说明isolation枚举Isolation的值事务隔离级别noRollbackForClass一组异常类,遇到时不回滚。默认为noRollbackForClassNameStirng一组异常类名,遇到时不回滚,默认为propagation枚举org.springframework.transaction.annotation.Propagation的值事务传播行为readOnlyboolean事务读写性rollbackForClass一组异常类,遇到时回滚rollbackForClassNameStirng一组异常类名,遇到时回滚timeoutint超时时间,以秒为单位valueString可选的限定描述符,指定使用的事务管理器Spring Transactional propagation 各个属性值的含义REQUIRED业务方法需要在一个容器里运行。如果方法运行时,已经处在一个事务中,那么加入到这个事务,否则自己新建一个新的事务。NOT_SUPPORTED声明方法不需要事务。如果方法没有关联到一个事务,容器不会为他开启事务,如果方法在一个事务中被调用,该事务会被挂起,调用结束后,原先的事务会恢复执行。REQUIRESNEW不管是否存在事务,该方法总汇为自己发起一个新的事务。如果方法已经运行在一个事务中,则原有事务挂起,新的事务被创建。MANDATORY该方法只能在一个已经存在的事务中执行,业务方法不能发起自己的事务。如果在没有事务的环境下被调用,容器抛出例外。SUPPORTS该方法在某个事务范围内被调用,则方法成为该事务的一部分。如果方法在该事务范围外被调用,该方法就在没有事务的环境下执行。NEVER该方法绝对不能在事务范围内执行。如果在就抛例外。只有该方法没有关联到任何事务,才正常执行。NESTED如果一个活动的事务存在,则运行在一个嵌套的事务中。如果没有活动事务,则按REQUIRED属性执行。它使用了一个单独的事务,这个事务拥有多个可以回滚的保存点。内部事务的回滚不会对外部事务造成影响。它只对DataSourceTransactionManager事务管理器起效。12、Scope注解我们可能还需要通过bean的scope属性来定义一个Bean的作用范围,我们同样可以通过Scope注解来完成这项工作:Spring容器最初提供了两种bean的scope类型:singleton和 prototype,但发布2.0之后,又引入了另外三种scope类型,即request,session和global session类型。不过这三种类型有所限制,只能在web应用中使用,也就是说,只有在支持web应用的ApplicationContext中使用这 三个scope才是合理的。注意:这里的singleton和设计模式里面的单例模式不一样,标记为singleton的bean是由容器来保证这种类型的bean在同一个容器内只存在一个共享实例,而单例模式则是保证在同一个Classloader中只存在一个这种类型的实例。(1) scope类型singleton(单例模式)singleton类型的bean定义,在一个容器中只存在一个实例,所有对该类型bean的依赖都引用这一单一实例,这就好像每个幼儿园都会有一个滑梯一样,这个幼儿园的小朋友共同使用这一个滑梯,而对于幼儿园容器来说,滑梯就是一个singleton的bean。此外,singleton类型的bean定义,从容器启动,到他第一次被请求而实例化开始,只要容器不销毁或退出,该类型的bean的单一实例就会一直存活。 通常情况下,如果你不指定bean的scope,singleton
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 颈静脉插管术后护理查房
- 新建轨道交通关键零部件转向架类产品产线提质升级项目可行性研究报告模板-立项拿地
- 蝗灾应急防控方案
- 年产48000t汽车配件智能工段项目可行性研究报告模板-立项申报用
- JavaScript 程序设计 课件 第7章-类和对象
- 洗漱套装配送协议
- 甲状腺术后呼吸功能锻炼指导
- 2026年及未来5年市场数据中国戒烟产品行业市场深度研究及投资战略规划报告
- N0-N1层级阑尾炎病人护理专项试题
- 阑尾炎病人护理考核试题(一)
- 幼儿园春季传染病预防课件
- 造价咨询岗位责任制度
- 岩棉板外墙外保温施工技术交底
- 纺织厂生产厂长考核制度
- 食品厂员工培训管理制度
- 2026届高三生物二轮复习教学策略及尖优生精准辅导策略
- 四川省2025年高职单招职业技能综合测试(中职类)电子信息类试卷
- 《社会认知:从大脑到文化》阅读记录
- 《高级育婴员》职业资格通关500题(标准答案版)
- 超纯水设备培训
- 商务司机岗位职责与考核标准
评论
0/150
提交评论