文章目录

  • 声明bean的注解
  • 注入Bean的注解
  • 配置类的相关注解
  • 单元测试注解
  • 时间格式的转换注解
  • SpringMVC注解
  • AOP切面相关注解
  • 五种通知
  • @Autowired 与@Resource的区别:
  • @RequestParam
  • @RequestBody
  • @PathVariable
  • @ResponseBody
  • @RequestHeader
  • @RequestMapping

Spring常用注解包括了SpringMVC的注解,SpringMVC是Spring的子项目

声明bean的注解

@Controller 标注控制层组件

@Service 标注业务层组件

@Respostory 标注数据访问组件

@Component 标注@Controller、@Service、@Respostory以外的其他组件

注入Bean的注解

@Autowired 按类型注入,注入的属性必须提供set方法

注意:@Resource按名称注入,属于J2EE范畴,不属于Spring框架,@Autowired属于Spring框架

@Qualifier 与@Autowired配合使用

接口或父类可能存在多个实现类或子类的实例,因此通过@Qualifier来指定名称的实例注入

配置类的相关注解

@Configuration 注解在类上,声明当前类为配置类,相当于xml中<beans>标签

@Bean 注解在方法上,声明当前方法的返回值是一个由Spring管理的Bean,在类spring加载的时 候就会创建该Bean,相当于xml中bean标签中配置的单个bean对象

单元测试注解

@RunWith:指定Spring集成单元测试的运行环境

@ContextConfiguration:指定Spring的配置文件路径

时间格式的转换注解

@DateTimeFormat 前台传往后台的时间进行转换

注意:后台传往前台的时间进行转换用@JsonFormat,非spring注解,需要导入Jackson的jar包

SpringMVC注解

  • @Controller:标识Controller控制器,SpringMVC扫包时才会创建控制器组件

  • @ControllerAdvice:声明全局异常处理类

    @ControllerAdvice声明的全局异常处理类中,处理异常的方法均使用@ExceptionHandler进行注解

    通过@ControllerAdvice注解实现异常处理的作用:全局异常处理,减少代码入侵

  • @ExceptionHandler:声明异常处理方法

    1. @ExceptionHandler注解的处理异常的方法中可以加入Exception类型的形参,执行时会自动注入异常对象
    2. @ExceptionHandler注解的处理异常的方法可以不在@ControllerAdvice声明的全局异常处理类中,而在出现异常的类中
    3. @ControllerAdvice和@ExceptionHandler只能处理 Controller 层未捕获(往外抛)的异常,对应拦截器的异常无法无法处理
    4. 如果当前Controller类中的方法出现异常,会优先使用当前Controller类中的@ExceptionHandler标记的异常处理方法,当前Controller类中找不到方法时,才会去全局异常处理类中找异常处理方法。即便全局异常处理的异常类型与当前异常对象类型更匹配,也会优先使用局部的【就近原则】

  • @RequestHeader 获取请求头中指定属性的值

  • @PathVariable:映射URL中占位符参数绑定到Controller处理方法的参数

  • @ModelAttribute 用于打了注解@RequestMapping的方法或参数上

    1. 当@ModelAttribute注解在方法上,此方法会在每一个@RequestMapping标注的方法执行之前执行,如果有返回值,则自动将该返回值加入到ModelMap中。如果@ModelAttribute没有指定value属性,则modelMap中key为类型名(首字符小写即可);如果指定了@ModelAttribute指定value属性,则modelMap中key为value属性指定值
    2. 当注解在参数时,当请求数据的编码格式为 application/x-www-form-urlencoded时,将请求参数赋值给Controller控制器中方法的形参,通过指定value属性值与方法的形参进行绑定
    3. @ModelAttribute的value属性值与调用方法的形参名不一致时,可以在调用方法的形参前也加注解@ModelAttribute(value=“属性名”),指定注入数据给指定形参
  • @RequestParam 当请求数据的编码格式为 application/x-www-form-urlencoded时,将请求参数赋值给Controller控制器中方法的形参

  • @RequestBody 当请求数据的编码格式为 application/jsonapplication/xml等非 application/x-www-form-urlencoded类型时,获取请求体中的数据。当请求数据的编码格式为application/x-www-form-urlencoded时,@RequestBody 也可以处理

    注意:当请求数据的编码格式为multipart/form-data时,@RequestBody 无法处理

  • @RequestMapping:用在类和方法上,用于处理请求地址的映射,常用属性value【映射地址】、method【请求方法】、params【请求参数】、heads【请求头】


  • @ResponseBody:注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区

AOP切面相关注解

  • 切面【Aspect】:切点和通知组成
  • 连接点【JoinPoint】:程序执行过程中明确的点,如方法前、方法后
  • 切点【PointCut】:并不是所有的连接点都要切一刀,带有通知的连接点叫做切点
  • 通知、增强【Advice】:想要在切点处实现的功能

@Aspect 声明当前类是一个切面,类中定义了切点和通知

@PointCut 声明切点

五种通知

@PointCut(“表达式”) 定义切点,注解的属性中配置切点位置

@Before 前置通知,该注解标识的通知在切点之前执行

@AfterReturning 后置通知,该注解标识的通知在切点之后执行

@AfterThrowing 异常通知

@After 最终通知 无论方法是否执行都会执行

@Autowired 与@Resource的区别:

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

  • @Autowired是spring的注解,@Resource是J2EE的注解

  • @Autowired默认按类型注入Bean。

    1. 注入的Bean对象必须存在,如果允许为null,可设置required属性为false
    2. @Autowired要想按名称注入,必须与@Qualifier搭配使用

    @Resource默认按名称装配Bean

    @Autowired和@Qulifiler注解

  • @Resource有两个常用属性:name和type。不配置属性时,默认按变量名称注入

    • @Resource装配顺序

      1. 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
      2. 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
      3. 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
      4. 如果没有指定name属性和Type属性,默认按注解所在字段的变量名进行注入,找不到再按类型注入
    • @Autowired默认按类型进行匹配。如果发现找到多个同类型的Bean,则报异常。
      • 默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ,默认required为true即不能为null
      • 如果想按名称注入,则可以结合@Qualifier注解进行使用@Qualifier(value=“名称”)
    //接口或父类可能存在多个实现类或子类的实例,因此通过@Qualifier来指定名称的实例注入
    @Autowired
    @Qualifier("userServiceImpl")
    public IUserService userService;   //指定接口只能注入某个实现类
    

@RequestParam

@RequestParam有四个属性:name属性、value属性、required属性、defaultValue属性,

  • required属性:@RequestParam配置的前端参数是否一定要传,默认为true,必须传该参数
  • name属性、value属性的作用一样
  • defaultValue属性:设置参数默认值,如果设置了默认值,则required属性自动变为false,此时如果前端不传参,则使用设置的默认值
//常用于前端传参和后端不一致的情况,@RequestParam注解可以自动进行转化
@RequestMapping("/test")
public String test(@RequestParam(value = "name") String username){System.out.println("username");return "success";
}

@RequestParam接收的是key-value里面的参数,get请求和post请求均可

@RequestBody

@RequestBody 接收的是请求体里面的数据,只能用于post请求,因为get请求的参数在请求头中

Post提交的数据为json格式时,注解@RequestBody 会自动封装到对象中

@RequestMapping("/rb")
public Dept test1(@RequestBody Dept dept){return dept;
}

@PathVariable

@RequestMapping("/del/{id}")
public void delete(@PathVariable Long id){iDeptService.deleteByPrimaryKey(id);
}

@ResponseBody

@RequestMapping("findAll")
@ResponseBody
public List<TEmployee> findAll() {return employeeService.findAll();
}
  • @ResponseBody 表示该方法的返回结果直接写入HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】
  • @RequestBody是作用在形参列表上,用于将前台发送过来固定格式的数据【xml 格式或者 json等】封装为对应的 JavaBean 对象,封装时使用到的一个对象是系统默认配置的 HttpMessageConverter进行解析,然后封装到形参上。

@RequestHeader

@RequestHeader用于获取请求头中属性的值,但get请求在请求头中传递的参数无法获取

@RequestMapping("/rh")
public void test2(@RequestHeader(value="Accept-Encoding") String str){System.out.println(str);
}

@RequestMapping

@RequestMapping注解常用属性value、method、params、headers

//method属性:指定请求方式
@RequestMapping(value = "/test",method = RequestMethod.POST)
public String test(@RequestParam(value = "name",defaultValue = "go") String username){System.out.println(username);return "success";
}
//指定参数需要满足的条件:params = {"name", "id!=1", "id=2"}必须包含名为name的参数,id必须不等于1,必须等于2
@RequestMapping(value = "/rh", params = {"name", "id!=1", "id=2"})
public void test2(Dept dept) {System.out.println(dept);
}

Spring常用注解相关推荐

  1. Spring系列之Spring常用注解总结

    参看博客:https://www.cnblogs.com/xiaoxi/p/5935009.html 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺 ...

  2. Spring常用注解总结

    传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点: 1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文 ...

  3. spring autowired idea都匹配上了_你清楚这几个Spring常用注解吗?

    作者:平凡希http://cnblogs.com/xiaoxi/p/5935009.html 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点: 如 ...

  4. Java 必须掌握的 12 种 Spring 常用注解

    转载自  Java 必须掌握的 12 种 Spring 常用注解 1.声明bean的注解 @Component 组件,没有明确的角色 @Service 在业务逻辑层使用(service层) @Repo ...

  5. Spring常用注解 - 使用注解来构造IoC容器

    Spring常用注解 使用注解来构造IoC容器 用注解来向Spring容器注册Bean.需要在applicationContext.xml中注册<context:component-scan b ...

  6. autowired注解_Spring系列之Spring常用注解总结

    作者:平凡希来源:https://www.cnblogs.com/xiaoxi/p/5935009.html 传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做 ...

  7. sessionattribute 被spring 扫描不到_Spring 系列之 Spring 常用注解总结(肝硬化的干货)...

    传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点: 1. 如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml ...

  8. java 知识积累_java学习知识积累-spring常用注解

    java学习知识积累-spring常用注解 类的分层注解,由于我们后台开发都是分为三层进行开发的,所以Spring框架提供了三种对于不同层的注解方式: 控制层:@Controller 服务层:@Ser ...

  9. Spring 常用注解 脑图版

    Spring 常用注解 脑图版 学习Spring Boot过程的笔记,通过思维导图整理自己的思路,更符合大脑记忆;在线版可以看到注释及代码实现; 在线脑图地址: http://naotu.baidu. ...

  10. Spring常用注解你知道有哪些吗?

    Spring 常用注解 今天给大家介绍一下 Spring 中的常用注解,同时这些注解也是 Spring 中经常用到的注解,下面我们就一起来看看都有哪些注解吧. 1.@Controller 在控制层使用 ...

最新文章

  1. C++学习笔记----3.2 C++引用在本质上是什么,它和指针到底有什么区别
  2. android列表滑到底部,Android中判断listview是否滑动到顶部和底部的实现方法
  3. hdu 6200 mustedge mustedge mustedge(dfs序+树状数组+并查集)
  4. 规模化微服务——《微服务设计》读书笔记
  5. Android之解决ViewPager2+PhotoView滑动图片花屏问题
  6. python可以帮机器人编程吗_Python如何实现机器人聊天
  7. Github项目|几行代码即可实现人脸检测、目标检测的开源计算机视觉库
  8. 【c++ primer读书笔记】【第2章】变量和基本类型
  9. Entity Framework之IQueryable和list本地集合
  10. iOS - 常用本机URL跳转设置
  11. 《我是一只IT小小鸟》阅读笔记
  12. 超全面!完全没有设计基础的新手如何做好PPT配色?(附神器)
  13. Windows IE 清理缓存
  14. secure IRS aided ISAC
  15. 利用matlab设计矩形脉冲信号,信号课程设计
  16. 阿里云域名转京东云服务器配置图
  17. Android微信支付遇到的大坑
  18. SQL Server2000中执行一个SQL, 在lock上发现自己锁自己
  19. H5 -- 微信h5页面中下载第三方app的方法
  20. 秦羽成为鸿蒙后和鸿蒙林蒙,鸿蒙三部曲修订稿.docx

热门文章

  1. 鲍威尔法源程序码matlab,鲍威尔算法matlab程序.doc
  2. 入侵无盘系统服务器,比有盘还快!梅捷带你体验锐起无盘系统
  3. u盘维护系统 linux,制作绝对pe+puppy U盘维护系统双系统(以下方法也可制作archlinux U盘安装)...
  4. CSS表格及表单美化
  5. Java_摩尔斯密码 非常详细
  6. Java项目:宠物店管理系统(java+JSP+JavaScript+Bootstrap+Mysql)
  7. 解析烧录固件失败_Sophos UTM固件反编译Perl源码
  8. C语言冒泡排序(从小到大排序)
  9. 传感器原理及应用期末复习题整理(上)
  10. 个人配置--常用软件保护色设置