Spring常用注解


@Controller

@Controller 用来响应页面,表示当前的类为控制器。
在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到。此外Controller 不会直接依赖于HttpServletRequest 和HttpServletResponse 等HttpServlet 对象,它们可以通过Controller 的方法参数灵活的获取到。
@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。单单使用@Controller 标记在一个类上还不能真正意义上的说它就是SpringMVC 的一个控制器类,因为这个时候Spring 还不认识它。那么要如何做Spring 才能认识它呢?这个时候就需要我们把这个控制器类交给Spring 来管理。


@RestController

Spring4之后新加入的注解,原来返回json需要@ResponseBody和@Controller配合,表明当前类是控制器且返回的是一组数据,不是页面。@RestController是@ResponseBody和@Controller的组合注解,推荐直接使用@RestController注解来处理http请求。

@RestController
public class HelloController {@RequestMapping(value="/hello",method= RequestMethod.GET)public String sayHello(){return "hello";}
}
@Controller
@ResponseBody
public class HelloController {@RequestMapping(value="/hello",method= RequestMethod.GET)public String sayHello(){return "hello";}
}

@Autowired

@Autowired的作用是将其他的接口引入,类似于之前的类的初始化等,用这个注解,类中或接口的方法就可以直接调用了。
@Autowired顾名思义,就是自动装配,其作用是为了消除代码Java代码里面的getter/setter与bean属性中的property。当然,getter看个人需求,如果私有属性需要对外提供的话,应当予以保留。
@Resource的作用相当于@Autowired


@ResponseBody

作用: 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。当返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)时使用。


@RequestMapping (配置url映射)

@RequestMapping如果没有指定请求方式,将接收Get,Post,Head,Options等所有的请求方式。
@RequestMapping此注解即可以作用在控制器的某个方法上,也可以作用在此控制器类上。当前台界面调用Controller处理数据时候告诉控制器怎么操作有3种情形:
1.当控制器在类级别上添加@RequestMapping注解时,这个注解会应用到控制器的所有处理器方法上。处理器方法上的@RequestMapping注解会对类级别上的@RequestMapping的声明进行补充。
2.@RequestMapping作用在处理器方法上。
3.@RequestMapping同时作用在类级别处理器方法上。

所响应的url=localhost:8080/updata_setting/updata


@RequestMapping注解属性

作用:简化常用的HTTP方法的映射,并更好地表达被注解方法的语义。
RequestMapping注解有六个属性:
1、 value, method;

value: 指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);

method: 指定请求的method类型, GET、POST、PUT、DELETE等;常用: GET、POST
组合注解:

  • @GetMapping @RequestMapping(method = RequestMethod.GET)的简写
    作用:对应查询,表明是一个查询URL映射
  • @PostMapping @RequestMapping(method =RequestMethod.POST)的简写
    作用:对应增加,表明是一个增加URL映射
  • @PutMapping@RequestMapping(method = RequestMethod.PUT)的简写
    作用:对应更新,表明是一个更新URL映射
  • @DeleteMapping @RequestMapping(method = RequestMethod.DELETE)的简写
    作用:对应删除,表明是一个删除URL映射

2、consumes,produces

consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;

produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;

3、params,headers

params: 指定request中必须包含某些参数值是,才让该方法处理。

headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。


@PathVaribale

通过@PathVariable注解来获取URL中的参数时的前提条件是我们知道url的格式时怎么样的。只有知道url的格式,我们才能在指定的方法上通过相同的格式获取相应位置的参数值。
1.获取url中的单个参数(如id)

@RestController
public class HelloController {@RequestMapping(value="/hello/{id}",method= RequestMethod.GET)public String sayHello(@PathVariable("id") Integer id){return "id:"+id;}
}

2.获取url有多个参数

@RestController
public class HelloController {@RequestMapping(value="/hello/{id}/{name}",method= RequestMethod.GET)public String sayHello(@PathVariable("id") Integer id,@PathVariable("name") String name){return "id:"+id+" name:"+name;}
}

@RequestParam

作用:获取请求参数的值
@RequestParam注解给允许用户不输入参数时,使用默认值;

@RequestBody

如果传输的是单层json对象,我们后台可以直接用 @RequestParam接收。如果传输的是多层嵌套json对象,这个时候会就会出现数据丢失问题,@ResponseBody很好的解决了这个问题,它会把前台传输过来的json转化为后台对应的对象;
@RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。(易出错)然而在ajax请求往往传的都是Json对象,用JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType: “json”,contentType:“application/json” 这样就可以轻易的将一个对象或者List传到Java端,使用@RequestBody即可绑定对象或者List。

var vm = new Vue({el: '#updata',data: {updata_setting: {}},methods: {Save:function(ev){var url = "../updata_setting/updata";$.ajax({type: "POST",url: url,data: JSON.stringify(vm.updata_setting),success: function(r){alert('操作成功!');}});}}
});

@Service

用于标注业务层组件,位于service实现层:
形如:@Service(“xxxService”)


@Override

@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处:
1、可以当注释用,方便阅读。
2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。比如你如果没写@Override而你下面的方法名又写错了,这时你的编译器是可以编译通过的(它以为这个方法是你的子类中自己增加的方法)。


@Repository

@Repository用于标注数据访问组件,即dao层

如果 Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用上述注解对分层中的类进行注释。@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。


END

Spring框架常用注解相关推荐

  1. Spring MVC常用注解说明

    2019独角兽企业重金招聘Python工程师标准>>>     使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能. 02     之前在使用Struts2实现MV ...

  2. 40 个 Spring Boot 常用注解

    以下文章来源方志朋的博客,回复"666"获面试宝典 作者 | 谭朝红 链接 | ramostear.com 一.Spring Web MVC 与 Spring Bean 注解 Sp ...

  3. Spring-学习笔记04【Spring的常用注解】

    Java后端 学习路线 笔记汇总表[黑马程序员] Spring-学习笔记01[Spring框架简介][day01] Spring-学习笔记02[程序间耦合] Spring-学习笔记03[Spring的 ...

  4. 近100个Spring/SpringBoot常用注解汇总!

    作者 | Guide 来源 | JavaGuide(微信公众号) 毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我 ...

  5. Spring Cache常用注解详解

    Spring Cache常用注解详解 @EnableCaching 开启Spring Cache框架支持.解析对应的注解,实现缓存读写访问 @CacheConfig 缓存配置,可以配置当前类型中所用缓 ...

  6. Spring学习总结(2)——Spring的常用注解

    2019独角兽企业重金招聘Python工程师标准>>> 本文汇总了Spring的常用注解,以方便大家查询和使用,具体如下: 使用注解之前要开启自动扫描功能 其中base-packag ...

  7. Spring MVC常用注解,你会几个?

    转载自 Spring MVC常用注解,你会几个? 常用注解 Controller 注解一个类表示控制器,Spring MVC会自动扫描标注了这个注解的类. RequestMapping 请求路径映射, ...

  8. 声明式事务、Spring 中常用注解、Ajax

    五. 声明式事务 编程式事务: 1.1 由程序员编程事务控制代码. 1.2 OpenSessionInView 编程式事务 声明式事务: 先引入依赖 <dependency><gro ...

  9. 接近8000字的Spring/SpringBoot常用注解总结!安排!

    文章目录 0.前言 1. `@SpringBootApplication` 2. Spring Bean 相关 2.1. `@Autowired` 2.2. `Component`,`@Reposit ...

  10. Spring/Spring Boot 常用注解总结

    0.前言 可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景.对于每一个注解我都说了具体用法,掌握搞懂,使用 SpringBoot ...

最新文章

  1. 你想见的大神都来AI ProCon 2019了,优惠票限时抢购开启!
  2. 1.8 小飞的电梯调度算法
  3. 使用WSUS服务器为客户端安装安全补丁
  4. 用c语言设计一个统计字符个数的程序,「第6篇」「C程序上机题」「统计输入的字符个数思路与实现」...
  5. 数据告诉你,抖音是如何在半年之内逆袭的
  6. [css] 你有用过CSS预处理器吗?喜欢用哪个?原理是什么?
  7. linux下装sqlserver安装包,【sqlServer】CentOS7.x 上Microsoft SQL Server for Linux安装和配置...
  8. 会真香吗?周某表示不会签约直播打工,想在老家种地
  9. java线程池 core_Java 线程池 ThreadPoolExecutor 的使用
  10. python 学习之路1-如何入门
  11. oracle重做日志的信息,Oracle重做日志和日志挖掘
  12. 关于可达矩阵的O(N*N)算法和强分图的O(E)算法
  13. ajax 上传图片所旅途,Ajax上传图片以及上传之前先预览
  14. 使谷歌浏览器兼容ie浏览器
  15. 【分享实录-猫眼电影】业务纵横捭阖背后的技术拆分与融合
  16. android模拟器 adb 命令,安卓模拟器下 使用ADB命令
  17. LSD算法调节参数GUI
  18. 关于保利威视平台的API调用签名
  19. Airbnb暂停中国境内服务 中国民宿市场消化15万房源
  20. 定位首款弹幕K歌软件 阿里鲸鸣未来究竟能够走多远?

热门文章

  1. 抽象代数学习笔记三《群:对称性变换与对称性群》
  2. 快捷指令获取url内容_快捷指令,钢铁侠里的“贾维斯”
  3. mui登录模板源码解
  4. 投影仪显示播放服务器连接异常,投影仪常见的故障大全和原因
  5. JMeter下载和安装
  6. Kindle 电子书转换 azw3 mobi
  7. jdk8安装和环境变量配置
  8. 楼天成,ACRush
  9. openproj centos安装及其输入中文变方块乱码解决
  10. 计算机显卡驱动不匹配,显卡驱动与系统不兼容?尤其是老电脑