Spring boot常用注解

简介: Spring boot常用注解

前言

很多人人刚接触Spring架构的时候都有这样疑惑,注解是什么?有什么用?各个注解都表示什么意思?什么时候该用对应的注解?有太多的疑惑了。

简单总结一下目前我在项目中接触到的Spring boot的注解。

什么是注解

在学习之前,得先搞明白什么是注解,

其实说白就是代码里的特殊标志,这些标志可以在编译,类加载,运行时被读取,并执行相应的处理,以便于其他工具补充信息或者进行部署。
例如:Java中的基本注解之一@Override

表示限定父类重写方法,当之类重写父类方法是,之类可以加上这个注解,这可以确保之类确实重写了父类的方法,避免出现低级错误。如果方法有Override注解,但没有任何父类或实现的接口声明该方法,则编译器会报错,强制程序员修复该问题。

常用注解

Controller层

@Controller
@RequestMapping

@Controller//在Controller类中用于定义一个控制器类
@RequestMapping//一个用来处理请求地址映射的注解;提供路由信息,负责URL到Controller中的具体函数的映射,可用于类或方法上。

用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。用于方法上则是对方法进行注解以产生访问的路径。

例如:

//放在类名上设置请求前缀
@RequestMapping("words-filter")
//放在方法名上设置请求映射url:
@RequestMapping(value = "add", method = {RequestMethod.POST})

那么这个方法的访问地址为:/words-filter/add

value用于设置方法或者类的映射路径,也可以直接写路径。

如@RequestMapping(“words-filter”)相等于@RequestMapping(value=“words-filter”)

method用于指定请求的方法,可以设置单个或者多个,如果请求方法不满足条件这会请求失败。

请求方法常用的有,GET、POST、PUT、DELETE等。


params可以指定多个url携带的参数,请求中必须包含某些参数值,才能让该方法处理。

params={paramsA}:表示请求必须包含名为paramsA的请求参数。

params={paramsA,paramsB}表示请求必须包含名为paramsA和paramsB的请求参数。

params={paramsA=valueA,paramsB}表示请求必须包含名为paramsA和paramsB的请求参数。且paramsA的值必须为valueA。

另外

Ant风格资源地址支持3种通配符:

  —— ? : 匹配文件名中的一个字符

  —— * : 匹配文件名中的任意多个字符(至少有一个字符)

  —— ** : 匹配多层路径(至少有一层)

例如:

@RequestMapping(value = “/add/some??”) 匹配/add/AA(??匹配任意两个字符)

@RequestMapping(value = “add/*/some”)

@RequestMapping(value = “add/**/some”) url可以是add/aa/bb/some等等url


@ResponseBody

表示该方法的返回结果直接写入HTTP response body中
般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析

为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。

@RequestParam

@RequestParam //获取查询参数。即url?name=这种形式

获取前端传递给后端的参数,可以是get方式也可以是post方式。其中如果前端传递的参数和后端你接受的参数是一致的可以省略不写,如果不一致一定要完整写,例如 :

@RequestMapping(value ="sensitiveConfig/{user}" ,method = {RequestMethod.GET})
public FrontResult selectSensitiveCourseClassConfig(@RequestParam String userPhone)

@PathVariable

@PathVariable //获取路径参数。即url/{id}这种形式。

例如:

@RequestMapping(value ="sensitiveConfig/{userPhone}" ,method = {RequestMethod.GET})
public FrontResult selectSensitiveCourseClassConfig(@ApiParam(name="userPhone",value = "用户手机号")@PathVariable(name="userPhone")String userPhone){
}
//@ApiParam,是注解api的参数,用于swagger

service层

@Service注解是@Component的一个延伸(特例),它用于标注业务逻辑类。与@Component注解一样,被此注解标注的类,会自动被Spring所管理。@SpringBootApplication//这个注解是Spring Boot最核心的注解,用在 Spring Boot的主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。
@EnableAutoConfiguration//允许 Spring Boot 自动配置注解,开启这个注解之后,Spring Boot 就能根据当前类路径下的包或者类来配置 Spring Bean。@ComponentScan//组件扫描。让spring Boot扫描到Configuration类并把它加入到程序上下文。

@Configuration//用于定义配置类,指出该类是 Bean 配置的信息源,相当于传统的xml配置文件,一般加在主类上。
@Repository注解也是@Component注解的延伸,与@Component注解一样,被此注解标注的类会被Spring自动管理起来,@Repository注解用于标注DAO层的数据持久化类。
@Bean注解主要的作用是告知Spring,被此注解所标注的类将需要纳入到Bean管理工厂中。@Bean注解的用法很简单

@Autowired

@Resource

@Resource(name=”name”,type=”type”) //没有括号内内容的话,默认byName。与@Autowired干类似的事;

相同点:@Resource的作用相当于@Autowired,均可标注在字段或属性的setter方法上。

不同点:

1、提供方:@Autowired是由org.springframework.beans.factory.annotation.Autowired提供,换句话说就是由Spring提供;@Resource是由javax.annotation.Resource提供,即J2EE提供,需要JDK1.6及以上。

2、注入方式:@Autowired只按照byType 注入;@Resource默认按byName自动注入,也提供按照byType 注入;

3、属性:@Autowired按类型装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false。如果我们想使用按名称装配,可以结合@Qualifier注解一起使用;@Resource有两个中重要的属性:name和type。name属性指定byName,如果没有指定name属性,当注解标注在字段上,即默认取字段的名称作为bean名称寻找依赖对象,当注解标注在属性的setter方法上,即默认取属性名作为bean名称寻找依赖对象。

@Component //spring中的一个注解,它的作用就是实现bean的注入。(@Service,@Repository,@Controller是该注解的衍生注解)

@bean //@Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。注解@Bean被声明在方法上,方法都需要有一个返回类型,而这个类型就是注册到IOC容器的类型。

@Import //这种方法最为直接,直接把指定的类型注册到IOC容器里,成为一个java bean,可以把@Import放在程序的入口,它在程序启动时自动完成注册bean的过程。

mapper(DAO)层

@Mapper //是 Mybatis 的注解,和 Spring 没有关系。使用mybatis时一定要有,否则 Mybatis 找不到 mapper。
@Repository //用于标注数据访问组件,即DAO组件,是 Spring 的注解,用于声明一个 Bean。@Repository 可有可无,可以消去依赖注入的报错信息

目录
相关文章
|
13天前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
138 73
|
8天前
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
40 21
|
13天前
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
|
13天前
|
Java Spring
【Spring配置】idea编码格式导致注解汉字无法保存
问题一:对于同一个项目,我们在使用idea的过程中,使用汉字注解完后,再打开该项目,汉字变成乱码问题二:本来a项目中,汉字注解调试好了,没有乱码了,但是创建出来的新的项目,写的注解又成乱码了。
|
2月前
|
前端开发 Java Spring
Spring MVC核心:深入理解@RequestMapping注解
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的核心,它将HTTP请求映射到控制器的处理方法上。本文将深入探讨`@RequestMapping`注解的各个方面,包括其注解的使用方法、如何与Spring MVC的其他组件协同工作,以及在实际开发中的应用案例。
49 4
|
2月前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
151 2
|
2月前
|
前端开发 Java Spring
探索Spring MVC:@Controller注解的全面解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序的基石之一。它不仅简化了控制器的定义,还提供了一种优雅的方式来处理HTTP请求。本文将全面解析`@Controller`注解,包括其定义、用法、以及在Spring MVC中的作用。
61 2
|
2月前
|
消息中间件 Java 数据库
解密Spring Boot:深入理解条件装配与条件注解
Spring Boot中的条件装配与条件注解提供了强大的工具,使得应用程序可以根据不同的条件动态装配Bean,从而实现灵活的配置和管理。通过合理使用这些条件注解,开发者可以根据实际需求动态调整应用的行为,提升代码的可维护性和可扩展性。希望本文能够帮助你深入理解Spring Boot中的条件装配与条件注解,在实际开发中更好地应用这些功能。
44 2
|
2月前
|
JSON Java 数据格式
springboot常用注解
@RestController :修饰类,该控制器会返回Json数据 @RequestMapping(“/path”) :修饰类,该控制器的请求路径 @Autowired : 修饰属性,按照类型进行依赖注入 @PathVariable : 修饰参数,将路径值映射到参数上 @ResponseBody :修饰方法,该方法会返回Json数据 @RequestBody(需要使用Post提交方式) :修饰参数,将Json数据封装到对应参数中 @Controller@Service@Compont: 将类注册到ioc容器
|
2月前
|
前端开发 Java 开发者
Spring MVC中的控制器:@Controller注解全解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序控制层的核心。它不仅简化了控制器的定义,还提供了灵活的请求映射和处理机制。本文将深入探讨`@Controller`注解的用法、特点以及在实际开发中的应用。
109 0