SpringMVC中的注解你知道多少?

目录

一、概念

二、springmvc注解详解

(一)控制层注解

1.@Controller 

2.@RequestMapping

3.@ResponseBody

(二)配置类(bean类)注解

4.@configuration

5.@Bean

(三)扫描注解

6.@ComponentScan

(四)参数注解

7.@RequestParam

8.@pathvariable

(五)其他注解

9.@Override 

10.@Autowired

(六)异常注解

11.@restcontrolleradvice

12.@ExceptionHandler


一、概念

在学习springmvc的时候,很多时候对于代码看得云里雾里,不理解这里为什么要这样写,首先就要先理解这些注解的使用,才能知道这个类,这个方法在干嘛。要干嘛?

二、springmvc注解详解

(一)控制层注解

1.@Controller 

这个注解是是Spring框架提供的注解。用于标记在一个类上面

关于调用:

这个类代表控制器类(控制层/表现层)

这里控制层里面的每个方法,都可以去调用@Service标识的类(业务逻辑层)
@Service标识的类中的方法又可以继续调用@Resposity标识的接口实现类(Dao层/持久层)。 

搭配其他注解使用:

@Controller定义一个控制器类,
@RequestMapping给出外界访问方法的路径,或者说触发路径 ,触发条件。
@ResponseBody标记Controller类中的方法。把return的结果变成JSON对象返回。

补充知识:

 @Controller用于标记在一个类上,使用它标记的类就是一个Controller类,分发处理器会扫描使用该注解的类的方法,并检测该方法是否使用了 @RequestMapping 注解。
@Controller只是定义了一个控制器类,而使用 @RequestMapping 注解的方法才是处理请求的处理器。

2.@RequestMapping

这个注解用在@Controller定义一个控制器类的方法上面。

用于将任意HTTP 请求映射到控制器方法上。能够处理 HTTP 请求的方法, 比如 GET, PUT, POST, DELETE 以及 PATCH。默认请求是 HTTP GET 类型的。

补充知识

在使用@RequestMapping()注解的前提下,使用@ResponseBody()注解,则有返回值会使用@ResponseBody()注解进行转换并返回前台页面,不会执行跳转操作。

总结:只用@RequestMapping这个并且有返回值会解析为跳转页面,再加上@ResponseBody后会解析json数据

3.@ResponseBody

这个@ResponseBody注解是作用在方法上的 。作用是将java对象转为json格式的数据。

补充知识

(1)在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 比如异步获取 json 数据。

(2)将返回值转换成JSON,如果返回值是String或者其他基本数据类型则不满足key-value形式,不能转换成json类型,则返回字符串。

总结:只用@RequestMapping这个并且有返回值会解析为跳转页面,再加上@ResponseBody后会解析json数据

(二)配置类(bean类)注解

4.@configuration

这个注解是一个类级别的注解。@Configuration类通过带@Bean注释在方法上声明bean。

你想要定义一个配置类并交给spring管理的时候你就可以在类上面加这个注解,并配合@Bean注解把对象交个spring去管理。(这个类的功能等同于一个bean xml配置文件)

配置类使用要求

(1)不能是final类

(2)不能在方法中声明,不能是private类

(3)任何嵌套类都必须声明static

总结

@Configuration注解类下的所有带着@Bean的方法都会被动态代理,因此调用该方法返回的都是同一个实例。 

5.@Bean

这个注解是一个方法级别的注解。就是告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在IOC容器

搭配其他注解使用:主要用在@Configuration注解的类里面的方法上面,也可以用在@Component注解的类里面。添加的bean的id为方法名。

(三)扫描注解

6.@ComponentScan

这个注解通常会作用在类上面,标记这个类为一个组件。作用是根据指定定义的扫描路径,把符合扫描规则的类装配到spring容器中

默认的情况下,被扫描的时候会被作为bean注册到容器当中。 被注册为bean的时候,用来指定bean的名称,如果不指定,默认为类名首字母小写。

(四)参数注解

7.@RequestParam

这个注解将请求参数绑定到你控制器的方法形参上(是springmvc中接收普通参数的注解)。@RequestParam 常用来处理简单类型的绑定。用于接收url地址传参或表传单

补充知识:如果发送非json格式数据,选用@RequesParam接收请求参数

8.@pathvariable

这个注解用于接收路径参数,使用(参数名称)描述路径参数。采用Restful进行开发,当参数数量比较少时,例如1个,可以采用这个注解接收请求路径变量,通常用于传递id值。

(五)其他注解

9.@Override 

这个注解可以当注释用,可以告诉读你代码的人,这是对它父类方法的重写。不用也可以。 确实就是一个编写代码的规范而已,写不写仅仅是影响代码阅读性而已。

10.@Autowired

这个注解就是当需要使用bean的时候,加上了这个注解(前提是被spring扫描到的情况下),这个bean就会被创建,并且将其初始化为spring应用上下文中的bean。

使用场景:一个类中有多个构造方法,要选择一个构造方法进行spring实例化时,可以在构造方法上面加上这个注解

补充知识

(1)使用这个注解的构造函数的都可以被实例化,private的也可以。当只有一个构造方法时候,不用加这个注解,spring会默认实例化这个构造方法。当有多个构造方法时候才需要用这个注解

(2)这个注解且required属性为true只能有一个。其他的@Autowired直接的required属性必须设置为false。

(3)实例化带参数的构造方法时候,spring会优先实例化构造方法中的参数对象

(六)异常注解

11.@restcontrolleradvice

这个注解是异常注解,放在类上面,代表这个类统一处理异常,是rest开头的,代表处理rest风格的异常,基于AOP思想,所以又含有advice,通常配合@ExceptionHandler使用,这个异常代表指定要拦截哪些异常。

位置:Rest风格开发的控制器增强类定义上方

作用:为Rest风格开发的控制器类做增强(此注解自带ResponseBody注解和Component注解,具备对应的功能)

12.@ExceptionHandler

这个注解是拦截指定异常的,通常写在方法的上面。告诉这个方法里面要拦截哪些异常。与@restcontrolleradvice搭配使用比较多

位置:专用于异常处理的控制器方法上方

作用:设置异常指定的处理方案,功能等同于控制器方法,出现异常后终止原始控制器执行,并转入当前的方法执行。 

有什么问题都可以评论区留言,看见都会回复的

如果你觉得本篇文章对你有所帮助的,多多支持吧!!!

点赞收藏评论,抱拳了!

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云边的快乐猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值