springboot注释详解

1.@SpringBootApplication

为复合注解,包含:

* @Configuration:表示将该类作用springboot配置文件类。

*@EnableAutoConfiguration:表示程序启动时,自动加载springboot默认的配置。例如,如果你的classpath下存在HSQLDB,并且你没有手动配置任何数据库连接beans,那么我们将自动配置一个内存型(in-memory)数据库”。你可以将@EnableAutoConfiguration或者@SpringBootApplication注解添加到一个@Configuration类上来选择自动配置。如果发现应用了你不想要的特定自动配置类,你可以使用@EnableAutoConfiguration注解的排除属性来禁用它们。

* @ComponentScan:表示程序启动时,自动扫描当前包及子包下所有类,可自动发现和装配一些Bean。

其中@ComponentScan让springBoot扫描到Configuration类并把它加入到程序上下文,如果扫描到有@Component、@Controller、@Service等这些注解的类,并注册为Bean,可以自动收集所有的Spring组件,包括@Configuration类。我们经常使用@ComponentScan注解搜索beans,并结合@Autowired注解导入。可以自动收集所有的Spring组件,包括@Configuration类。我们经常使用@ComponentScan注解搜索beans,并结合@Autowired注解导入。如果没有配置的话,Spring Boot会扫描启动类所在包下以及子包下的使用了@Service,@Repository等注解的类。

2.@MapperScan

指定要扫描的Mapper类的包的路径,可注解多个包,如:{"com.kfit.demo","com.kfit.user"},

如果mapper类没有在SpringBoot主程序可以扫描的包或者子包下面,可以使用如:{"com.kfit.*.mapper","org.kfit.*.mapper"}

3.  @Mapper

为了能够被别的类进行引用,可添加@Mapper

4.@RequestMapping

提供路由信息,负责URL到Controller中的具体函数的映射。是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。@RequestMapping(“/path”)表示该控制器处理所有“/path”的UR L请求。

属性说明及应用:

* .value:指定请求的实际地址,指定的地址可以是URI Template模式

* .method:指定请求的method类型,GET、POST、PUT、DELETE等;

如:

1./*@RequestMapping("/appointments")

**@RequestMapping(method = RequestMethod.GET)

**@RequestMapping(value="/{day}", method = RequestMethod.GET)

**@RequestMapping(value="/new", method = RequestMethod.GET)

**@RequestMapping(method = RequestMethod.POST)

*/

2./*@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)

*/

3./*@RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\d\.\d\.\d}.{extension:\.[a-                                          *z]}")

*/

注解:

value的uri值为以下三类:

A) 可以指定为普通的具体值(1./**/);

B)  可以指定为含有某变量的一类值(URI Template Patterns with Path Variables)(2./**/);

C) 可以指定为含正则表达式的一类值( URI Template Patterns with Regular Expressions)(3./**/);

* .consumes:指定处理请求的提交内容类型(Content-Type),如;application/json,text/html;

如:

/*@RequestMapping(value = "/pets", method = RequestMethod.POST, consumes="application/json")

*方法仅处理request Content-Type为"application/json"类型的请求

*/

* .produss:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;

如:

/*@RequestMapping(value = "/pets/{petId}", method =RequestMethod.GET,produces="application/json")

*方法仅处理request请求中Accept头中包含了"application/json"的请求,同时暗示了返回的内容类型为application/json;

*/

* .params:指定request中必须包含某些参数值是,才让该方法处理

如:

/*@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET,*params="myParam=myValue")

*仅处理请求中包含了名为“myParam”,值为“myValue”的请求;

*/

* .headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。

如:

/*@RequestMapping(value = "/pets", method = RequestMethod.GET,*headers="Referer=http://www.ifeng.com/")

*仅处理request的header中包含了指定“Refer”请求头和对应值为“http://www.ifeng.com/”的请求;

*/

5.@Autowired(自动导入)

自动把bean里面引用的对象的setter/getter方法省略,自动帮你set/get,使用了,只需要在UserService的实现类中声明即可。自动导入依赖的bean。byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。当加上(required=false)时,就算找不到bean也不报错。

如:

@Autowired

protected EntryMapper entryMapper;

6.@Bean

注解分为两类:

1)使用Bean,即是把已经在xml文件中配置好的Bean拿来用(等价于XML中配置的bean。)完成属性、方法的组装;比如                       @Autowired,@Resource,可以通过byTYPE(@Autowired),byNAME(@Resource)的方法获取Bean;

2)注册Bean,@Component,@Repository,@Controller,@Service,@Resource配合到一起,把对象、属性、方法完美组装。

@Bean明确地指示了一种方法,什么方法呢——产生一个bean的方法,并且交给Spring容器管理;从这我们就明白了为啥@Bean是放在方法的注释上了,因为它很明确地告诉被注释的方法,你给我产生一个Bean,然后交给Spring容器,剩下的你就别管了

解释:1.凡是子类及带属性、方法的类都注册Bean到Spring中,交给它管理;

2.@Bean用在方法上,告诉Spring容器,你可以从下面这个方法中拿到一个Bean

7.@Configuration

用于定义配置类,可替换xml配置文件(两者等同),被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器,使用java代码可以检查类型安全,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。

1.1、@Configuration配置spring并启动spring容器

1)@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的<beans>,作用为:配置spring容器(应用上下文)

1.2、@Configuration启动容器+@Bean注册Bean,@Bean下管理bean的生命周期

2)@Bean标注在方法上(返回某个实例的方法),等价于spring的xml配置文件中的<bean>,作用为:注册bean对象

8.@ConfigurationProperties

作用:绑定application.properties中的属性

9.@Test

是JUnit测试的基础,它提供了其他作用

1)指定会抛出的异常类型,如果没有抛出异常或者抛出的异常不属于我们指定的类型,就会算是测试失败(@Test(expected =RuntimeException.class))

2)测试一段代码运行时间。如:@Test(timeout=100)

10.@Select

11.@Delete

12.@Param

给参数命名,参数命名后就能根据名字得到参数值,正确的将参数传入sql语句中

13.@Insert

14.@NonNull :

注解在参数上, 如果该类参数为 null , 就会报出异常,  throw new 15.NullPointException(参数名)

16.@Cleanup :

注释在引用变量前, 自动回收资源 默认调用 close() 方法

17.@Getter/@Setter :

注解在类上, 为类提供读写属性

18.@Getter(lazy=true) :

19.@ToString :

注解在类上, 为类提供 toString() 方法

20.@EqualsAndHashCode :

注解在类上, 为类提供 equals() 和 hashCode() 方法

21.@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor :

注解在类上, 为类提供无参,有指定必须参数, 全参构造函数

22.@Data :

注解在类上, 为类提供读写属性, 此外还提供了 equals()、hashCode()、toString() 方法

23.@Value :

注入Spring boot application.properties配置的属性的值

如:

@Value(value = “#{message}”)

private String message;

24.@Builder :

注解在类上, 为类提供一个内部的 Builder

25.@SneakThrows :

26.@Synchronized :

注解在方法上, 为方法提供同步锁

27.@Log :

28.@Log4j :

注解在类上, 为类提供一个属性名为 log 的 log4j 的日志对象

29.@Slf4j :

注解在类上, 为类提供一个属性名为 log 的 log4j 的日志对象

30.@Cleanup("dispose") org.eclipse.swt.widgets.CoolBar bar = new CoolBar(parent, 0);

31.@Cleanup InputStream in = new FileInputStream(args[0]);

32.@Cleanup OutputStream out = new FileOutputStream(args[1]);

33.@EnableAutoConfiguration 自动配置。

34.@Component可配合CommandLineRunner使用,在程序启动后执行一些基础任务。泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

35.@RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器,用于标注控制层组件(如struts中的action)

36.@PathVariable获取参数。

37.@JsonBackReference解决嵌套外链问题。

38.@RepositoryRestResourcepublic配合spring-boot-starter-data-rest使用。

39.@ResponseBody

表示该方法的返回结果直接写入HTTP responsebody中,一般在异步获取数据时使用,用于构建RESTful的api。在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。该注解一般会配合@RequestMapping一起使用。

40.@Controller:

用于定义控制器类,在spring 项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping。

41.@Import:用来导入其他配置类。

42.@ImportResource:用来加载xml配置文件。

43.@Service:一般用于修饰service层的组件

44.@Repository:

使用@Repository注解可以确保DAO或者repositories提供异常转译,这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。

45.@Inject:等价于默认的@Autowired,只是没有required属性;

46.@Qualifier:当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。@Qualifier限定描述符除了能根据名字进行注入,但能进行更细粒度的控制如何选择候选者

如:

@Autowired

@Qualifier(value = “demoInfoService”)

private DemoInfoService demoInfoService;

47.@Resource(name=”name”,type=”type”):

没有括号内内容的话,默认byName。与@Autowired干类似的事。

48.@Entity:@Table(name=”“):

表明这是一个实体类。一般用于jpa这两个注解一般一块使用,但是如果表名和实体类名相同的话,@Table可以省略

49.@MappedSuperClass:

用在确定是父类的entity上。父类的属性子类可以继承。

50.@NoRepositoryBean:

一般用作父类的repository,有这个注解,spring不会去实例化该repository。

51.@Column:如果字段名与列名相同,则可以省略。

52.@Id:表示该属性为主键。

53.@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = “repair_seq”):表示主键生成策略是sequence(可以为Auto、IDENTITY、native等,Auto表示可在多个数据库间切换),指定sequence的名字是repair_seq。

54.@SequenceGeneretor(name = “repair_seq”, sequenceName = “seq_repair”, allocationSize = 1):name为sequence的名称,以便使用,sequenceName为数据库的sequence名称,两个名称可以一致。

55.@Transient:表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性。如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic。@Basic(fetch=FetchType.LAZY):标记可以指定实体属性的加载方式

56.@JsonIgnore:作用是json序列化时将Java bean中的一些属性忽略掉,序列化和反序列化都受影响。

57.@JoinColumn(name=”loginId”):一对一:本表中指向另一个表的外键。一对多:另一个表指向本表的外键。

58.@OneToOne、@OneToMany、@ManyToOne:对应hibernate配置文件中的一对一,一对多,多对一。

59.@RequestParam:用在方法的参数前面。

如:

@RequestParam

String a =request.getParameter(“a”)。

60.@PathVariable:路径变量

如:

RequestMapping(“user/get/mac/{macAddress}”)

public String getByMacAddress(@PathVariable String macAddress){

//do something;

}

61.@ControllerAdvice:包含@Component。可以被扫描到。统一处理异常。

62.@ExceptionHandler(Exception.class):用在方法上面表示遇到这个异常就执行以下方法。

原文地址:https://www.cnblogs.com/askill/p/10373689.html

时间: 2024-08-12 05:19:10

springboot注释详解的相关文章

SpringBoot配置详解

SpringBoot配置详解 SpringBoot自动化配置 在上一节中我们使用Spring Boot实现了一个简单的RESTful API应用,在实现过程中,除了Maven的pom文件的一些配置,我们没有做任何其他的配置,这就是Spring Boot的自动化配置带来的好处,但是,我们还需要了解如何在Spring Boot中修改这些自动化配置的内容,以应对一些特殊的场景需求. 配置文件—Spring Boot支持YAML配置文件和properties配置文件 Spring Boot的默认配置文件

黑马程序员——注释详解

元注释:就是注释的注释 元数据:就是数据的数据 不同的注释会在不用的时期发挥作用,RetentionPolicy.SOURCE,RetentionPolicy.CLASS,RetentionPolicy.RUNTIME,分别 的是java中的源文件,class文件,内存中的字节码 Override和SuppressWarnings这两个对应的是SOURCE,Deprecated对应的是RUNTIME, 除了那三中基本都类型之外,还有: @Target 元注释 @Target(ElementTyp

SpringBoot定时任务详解

阅读目录: 序言 一.静态:基于注解 二.动态:基于接口 三.多线程定时任务 阅读正文: 回到顶部 序言 使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式: 一.基于注解(@Scheduled) 二.基于接口(SchedulingConfigurer) 前者相信大家都很熟悉,但是实际使用中我们往往想从数据库中读取指定时间来动态执行定时任务,这时候基于接口的定时任务就派上用场了. 三.基于注解设定多线程定时任务 回到顶部 一.静态:基于注解 基于注解@Scheduled默认

mapreduce入门之wordcount注释详解

mapreduce版本:0.2.0之前 说明: 该注释为之前学习时找到的一篇,现在只是在入门以后对该注释做了一些修正以及添加. 由于版本问题,该代码并没有在集群环境中运行,只将其做为理解mapreduce的参考吧. 切记,该版本是0.2.0之前的版本,请分辨清楚! 正文: package org.apache.hadoop.examples; import java.io.IOException; import java.util.Iterator; import java.util.Strin

IE条件注释详解.

IE条件注释是微软从IE5开始就提供的一种非标准逻辑语句,作用是可以灵活的为不同IE版本浏览器导入不同html元素,如:样式表,html标签等.很显然这种方法的最大好处就在于属于微软官方给出的兼容解决办法而且还能通过W3C的效验. 让我们举几个例子来看看: 1.只有IE才能识别 1 <!--[if IE]> 2 <link type="text/css" rel="stylesheet" href="my.css" />

关于opencv中人脸识别主函数的部分注释详解。

近段时间在搞opencv的视频人脸识别,无奈自带的分类器的准确度,实在是不怎么样,但又能怎样呢?自己又研究不清楚各大类检测算法. 正所谓,功能是由函数完成的,于是自己便看cvHaarDetectObjects 这个识别主函数的源代码,尝试了解并进行改造它,以提高精确度. 可惜实力有限啊,里面的结构非常复杂,参杂着更多的函数体,有一些是网上找不到用法的,导致最终无法整体了解,只搞了一般,这里分享 下我自己总结的注释. 1 CvSeq* cvHaarDetectObjects( const CvAr

Eclipse注释详解

设置注释模板的入口: Window->Preference->Java->Code Style->Code Template 然后展开Comments节点就是所有需设置注释的元素啦.现就每一个元素逐一介绍: 文件(Files)注释标签: /** * @Title: ${file_name} * @Package ${package_name} * @Description: ${todo}(用一句话描述该文件做什么) * @author A18ccms A18ccms_gmail_

Java注释详解

在编写程序时,经常需要添加一些注释,用以描述某段代码的作用. 一般来说,对于一份规范的程序源代码而言,注释应该占到源代码的 1/3 以上.因此,注释是程序源代码的重要组成部分,一定要加以重视哦! Java 中注释有三种类型:单行注释.多行注释.文档注释 我们可以通过 javadoc 命令从文档注释中提取内容,生成程序的 API 帮助文档. 打开首页,查看下生成的 API 文档 PS:使用文档注释时还可以使用 javadoc 标记,生成更详细的文档信息: @author 标明开发该类模块的作者 @

Springboot 启动详解

1.前言 最近一直在看Springboot和springcloud代码,看了将近20多天,对这两个系统的认知总算是入了门.后续应该会有一个系列的文章,本文就先从Springboot的启动入手. 2.容器初始化 上面的代码是Springboot的入口,现在从run方法进去 点击进来后到了这里就会分成两步 1.生成一个SpringApplication对象 2.调用生成的对象的run方法 [2.1]我们先看SpringApplication的构造器是如何生成一个SpringApplication对象