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

目录
相关文章
|
20天前
|
XML Java 数据格式
SpringBoot入门(8) - 开发中还有哪些常用注解
SpringBoot入门(8) - 开发中还有哪些常用注解
38 0
|
2月前
|
Java Spring
在使用Spring的`@Value`注解注入属性值时,有一些特殊字符需要注意
【10月更文挑战第9天】在使用Spring的`@Value`注解注入属性值时,需注意一些特殊字符的正确处理方法,包括空格、引号、反斜杠、新行、制表符、逗号、大括号、$、百分号及其他特殊字符。通过适当包裹或转义,确保这些字符能被正确解析和注入。
|
27天前
|
XML JSON Java
SpringBoot必须掌握的常用注解!
SpringBoot必须掌握的常用注解!
48 4
SpringBoot必须掌握的常用注解!
|
5天前
|
前端开发 Java Spring
探索Spring MVC:@Controller注解的全面解析
在Spring MVC框架中,`@Controller`注解是构建Web应用程序的基石之一。它不仅简化了控制器的定义,还提供了一种优雅的方式来处理HTTP请求。本文将全面解析`@Controller`注解,包括其定义、用法、以及在Spring MVC中的作用。
21 2
|
29天前
|
存储 缓存 Java
Spring缓存注解【@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig】使用及注意事项
Spring缓存注解【@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig】使用及注意事项
99 2
|
29天前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
38 1
|
2月前
|
架构师 Java 开发者
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
在40岁老架构师尼恩的读者交流群中,近期多位读者成功获得了知名互联网企业的面试机会,如得物、阿里、滴滴等。然而,面对“Spring Boot自动装配机制”等核心面试题,部分读者因准备不足而未能顺利通过。为此,尼恩团队将系统化梳理和总结这一主题,帮助大家全面提升技术水平,让面试官“爱到不能自已”。
得物面试:Springboot自动装配机制是什么?如何控制一个bean 是否加载,使用什么注解?
|
23天前
|
存储 安全 Java
springboot当中ConfigurationProperties注解作用跟数据库存入有啥区别
`@ConfigurationProperties`注解和数据库存储配置信息各有优劣,适用于不同的应用场景。`@ConfigurationProperties`提供了类型安全和模块化的配置管理方式,适合静态和简单配置。而数据库存储配置信息提供了动态更新和集中管理的能力,适合需要频繁变化和集中管理的配置需求。在实际项目中,可以根据具体需求选择合适的配置管理方式,或者结合使用这两种方式,实现灵活高效的配置管理。
16 0
|
2月前
|
XML Java 数据库
Spring boot的最全注解
Spring boot的最全注解
|
2月前
|
存储 Java 数据管理
强大!用 @Audited 注解增强 Spring Boot 应用,打造健壮的数据审计功能
本文深入介绍了如何在Spring Boot应用中使用`@Audited`注解和`spring-data-envers`实现数据审计功能,涵盖从添加依赖、配置实体类到查询审计数据的具体步骤,助力开发人员构建更加透明、合规的应用系统。