springboot的常用注解
Easul Lv6

一般注解

@PostConstruct

标注到Springboot初始化就执行的方法,需要类上有@Component等注解

@SpringBootApplication

标注该类是主程序,包括下边三个注解

  • @Configuration 表示将该类作用为springboot配置文件类
  • @EnableAutoConfiguration: 程序启动时,自动加载springboot默认的配置。
  • @ComponentScan 表示程序启动时,自动扫描当前包及子包下所有类。

@Autowired

从容器中找该类型的变量进行赋值。注释类,方法,变量

@CrossOrigin

允许跨域.常用属性值:

  • origins:允许访问的域列表->http://domain2.com
  • maxAge 准备响应前的缓存持续的最大时间,单位为秒

@Profile

使指定的类或方法在特定的Profile环境生效,参考链接

@ImportResource

用来加载xml的bean

JAVA
1
@ImportResource({"classpath *:applicationContext.xml"})

@Import

将类注入到容器中

容器标识

@Component

用来标识一个组件

@Repository

用来标注dao(存储/持久)层组件,创建一个这个名字的实例到容器中

@Service

用来标注service(业务)层组件,创建一个实例到容器中

@Controller

用来标注controller(控制)层组件,可以在@RequestMapping中返回html页面

@Configuration

定义配置类,可替换xml文件,等价于<Beans></Beans>
不可修饰final类型;不可修饰匿名类;嵌套的@configuration必须是静态类

@Bean

标注在方法上,等价于<Bean></Bean>,可以使用return.有属性,get,set和业务逻辑

@Scope

用于定义作用域.常用属性值

  • singleton 单例模式
  • prototype 原型模式,每次返回一个新的实例
  • request 每次http请求创建一个新的bean,当前request有效
  • session 每次http请求创建一个新的bean,当前session有效
  • global session

@ConfigurationProperties

用于读取配置文件.常用属性值:

  • prefix 键的前缀
  • locations 文件的位置

Restful常用

@RestController

@ResponseBody@Controller的组合注解。加了可以直接返回字符数据,不返回index页面。可参考该链接

@ResponseBody

标识返回JSON等字符数据

@RequestMapping

用于映射url。常用属性有

  • value 指定访问url
  • method 指定GET或POST访问(RequestMethod.GET)
  • produces 设置返回值类型还可以设定返回值的字符编码
  • consumes 指定处理请求的提交内容类型(Content-Type)

@PathVariable

将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“)

JAVA
1
2
@RequestMapping("show5/{id}/{name}")
Public void test(@PathVariable("id") Long ids ,@PathVariable("name") String names){}

@RequestBody

获取非application/x-www-form-urlencoded请求的数据。

  • application/json
  • application/xml

JSON可以直接解析为List<Map<String, String>>
具体可以参考如下

@RequestParam

获取application/x-www-form-urlencoded请求的数据。可用于GET POST DELETE等, 常用属性有

  • required 表示是否必须,默认为 true,必须。
  • defaultValue 可设置请求参数的默认值。
  • value 为接收url的参数名(相当于key值)

异步任务

@EnableAsync

标记在类上,开启异步任务.主类即可

@Async

标记在方法上,为异步任务。

定时任务

@EnableScheduling

开启定时任务.标记主类即可

@Scheduled

标记定时任务.常用属性值:

  • fixedDelay 方法执行间隔。上次未执行完,下一次不执行。执行完后间隔指定时间再次执行
  • fixedRate 方法执行间隔。上次未执行完,下一次不执行。记录阻塞过程中应该执行的次数。不阻塞时一口气执行完,再按原时间执行。
  • corn 可以定制执行任务时间。其他与fixedDelay相同
  • initialDelay 启动时延迟指定时间
    JAVA
    1
    @Scheduled(initialDelay = 10000,fixedRate = 15000)
    启动延迟10s,然后每隔15秒执行。参考连接

Jackson

@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)

用于接收表单键值对的日期格式化时间,转为Date

@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”)

用于出参格式化时间为JSON
上边两个注解的作用可以参考12

@JsonProperty(value=”name”)

把该属性的名称序列化为另外一个名称

@JsonIgnore

用来标识不想传递给前台的属性
: Jackson其他注解

事务相关

@EnableTransactionManagement

开启事务支持

@Transactional

注释到方法,使其支持事务。

Lombok

参考链接

@Getter

自动生成属性的getter方法

@Settter

自动生成属性的setter方法

@ToString

自动生成类的toString方法

Swagger中的注解

参考这里

@ EnableSwagger2

用于开启Swagger2

@Api

用在请求的类上,对类的说明.常用属性:

  • tags说明该类的作用,可以在UI界面上看到的注解

@ApiOperation

用来构建API文档,放到方法上.常用属性

  • value 接口说明
  • httpMethod 接口请求方式
  • response 接口返回参数类型
  • notes 接口发布说明

@ApiImplicitParam

指定一个请求参数的各个方面.常用属性:

  • name 参数名
  • value 参数的汉字说明、解释
  • required 参数是否必须传
  • paramType 参数放在哪个地方
    • path 以地址的形式提交数据
    • query 直接跟参数完成自动映射赋值
    • body 以流的形式提交 仅支持POST
    • header 参数在request headers 里边提交
    • form 以form表单的形式提交 仅支持POST
  • dataType 参数类型,默认String,其它值dataType=”Integer”
  • defaultValue 参数的默认值
    参数过多可以参考这个.

@ApiImplicitParams

放一组@ApiImplicitParam

JAVA
1
2
3
4
@ApiImplicitParams({
@ApiImplicitParam(),
@ApiImplicitParam()
})

@ApiResponse

用在@ApiResponses中,一般用于表达一个错误的响应信息.常用参数:

  • code 数字,例如400
  • message 信息,例如”请求参数没填好”
  • response 抛出异常的类
    可以参考

@ApiResponses

用在请求的方法上,表示一组响应

@ApiModel

用于响应类上,表示一个返回响应数据的信息
(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)

@ApiModelProperty

用在属性上,描述响应类的属性
image

Java默认注解

@Override

重写方法时,名字出错,编译器报错

@Deprecated

标识某个类的属性或方法已经过时

@SuppressWarnings

抑制泛型提示,添加@SuppressWarnings("rawtypes")
压制程序中出来的警告,可供压制的参数参考

@Retention

修饰注释的注释
@Retention(RetentionPolicy.CLASS)修饰的注解,表示注解的信息被保留在class文件(字节码文件)中程序编译时,但不会被虚拟机读取在运行的时候;
@Retention(RetentionPolicy.SOURCE)修饰的注解,表示注解的信息会被编译器抛弃,不会留在class文件中,注解的信息只会留在源文件中;
@Retention(RetentionPolicy.RUNTIME)修饰的注解,表示注解的信息被保留在class文件(字节码文件)中程序编译时,会被虚拟机保留在运行时,
参考链接

@Target

用来标记注释可以修饰的范围

自定义注解

JAVA
1
public @interface UserLogin{ }

用于定义一个@UserLogin注解,可以加到Class,Method,Field上,相当于添加了附加信息,便于其他类进行判断.参考链接

 评论