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 可有可无,可以消去依赖注入的报错信息

目录
相关文章
|
2月前
|
Java 开发者 Spring
【SpringBoot 异步魔法】@Async 注解:揭秘 SpringBoot 中异步方法的终极奥秘!
【8月更文挑战第25天】异步编程对于提升软件应用的性能至关重要,尤其是在高并发环境下。Spring Boot 通过 `@Async` 注解简化了异步方法的实现。本文详细介绍了 `@Async` 的基本用法及配置步骤,并提供了示例代码展示如何在 Spring Boot 项目中创建与管理异步任务,包括自定义线程池、使用 `CompletableFuture` 处理结果及异常情况,帮助开发者更好地理解和运用这一关键特性。
125 1
|
2月前
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
2月前
|
缓存 Java 数据库连接
Spring Boot奇迹时刻:@PostConstruct注解如何成为应用初始化的关键先生?
【8月更文挑战第29天】作为一名Java开发工程师,我一直对Spring Boot的便捷性和灵活性着迷。本文将深入探讨@PostConstruct注解在Spring Boot中的应用场景,展示其在资源加载、数据初始化及第三方库初始化等方面的作用。
53 0
|
7天前
|
Java Spring 容器
Spring使用异步注解@Async正确姿势
Spring使用异步注解@Async正确姿势,异步任务,spring boot
|
6天前
|
XML Java 数据格式
spring复习03,注解配置管理bean
Spring框架中使用注解配置管理bean的方法,包括常用注解的标识组件、扫描组件、基于注解的自动装配以及使用注解后的注意事项,并提供了一个基于注解自动装配的完整示例。
spring复习03,注解配置管理bean
|
7天前
|
XML 前端开发 Java
控制spring框架注解介绍
控制spring框架注解介绍
|
20天前
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
|
2月前
|
Java 数据安全/隐私保护 Spring
揭秘Spring Boot自定义注解的魔法:三个实用场景让你的代码更加优雅高效
揭秘Spring Boot自定义注解的魔法:三个实用场景让你的代码更加优雅高效
|
2月前
|
XML Java 数据库
Spring5入门到实战------15、事务操作---概念--场景---声明式事务管理---事务参数--注解方式---xml方式
这篇文章是Spring5框架的实战教程,详细介绍了事务的概念、ACID特性、事务操作的场景,并通过实际的银行转账示例,演示了Spring框架中声明式事务管理的实现,包括使用注解和XML配置两种方式,以及如何配置事务参数来控制事务的行为。
Spring5入门到实战------15、事务操作---概念--场景---声明式事务管理---事务参数--注解方式---xml方式
|
2月前
|
监控 安全 Java
【开发者必备】Spring Boot中自定义注解与处理器的神奇魔力:一键解锁代码新高度!
【8月更文挑战第29天】本文介绍如何在Spring Boot中利用自定义注解与处理器增强应用功能。通过定义如`@CustomProcessor`注解并结合`BeanPostProcessor`实现特定逻辑处理,如业务逻辑封装、配置管理及元数据分析等,从而提升代码整洁度与可维护性。文章详细展示了从注解定义、处理器编写到实际应用的具体步骤,并提供了实战案例,帮助开发者更好地理解和运用这一强大特性,以实现代码的高效组织与优化。
54 0
下一篇
无影云桌面