SpringBoot第二篇【相关注解】

SpringBoot重要注解

@SpringBootConfiguration

标注在某个类上,表示该类为SpringBoot的配置类

@EnableAutoConfiguration

开启自动配置功能;用此注解才会自动配置

@AutoConfigurationPackage

自动配置包;将主配置类(@SpringBootConfiguration标注的类)所在包及其子包所有组件扫描进Spring容器

Spring重要注解

@ComponentScan

扫描该注解所标注的类所在包及其所有子包进Spring容器,相当于<context:component-scan="xxx"/>

使用方式:

  • 自定义扫描路径下被@Controller,@Service,@Repository,@Component注解标注的类进spring容器

  • 通过includeFilters扫描路径下没有以上注解标注的类加入spring容器

  • 通过excludeFilters扫描路径下有以上注解标注的类不加入spring容器

package com.example.demo;

import com.example.demo.controller.UserController;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;

@Configuration
@ComponentScan(value = "com.example.demo",includeFilters = {
        @ComponentScan.Filter(type= FilterType.ASSIGNABLE_TYPE,classes = UserController.class)
})
public class Config {
}

@Configuration

标注在某个类上,表示该类为Spring的配置类;配置类的作用相当于配置文件;配置类也是容器中的一个组件

@Import

给容器导入组件

@ConfigurationProperties

@ConfigurationProperties(prefix="xxx");批量注入配置文件属性;优先级比@Value高

@Value

单个注入属性

@ConfigurationProperties和@Value的区别:

@ConfigurationProperties @Value
功能 批量注入配置文件中的属性 单个注入属性
松散绑定(松散语法) 支持 不支持
SpEL 不支持 支持
JSR303数据校验 支持 不支持
复杂类型封装 支持 不支持

需要掌握的注解

@Valid

开启校验的功能

注解 说明
@Null 限制只能为null
@NotNull 限制必须不为null
@AssertFalse 限制必须为false
@AssertTrue 限制必须为true
@DecimalMax(value) 限制必须为一个不大于指定值的小数
@DecimalMin(value) 限制必须为一个不小于指定值的小数
@Digits(integer,fraction) 限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction
@Future 验证是否在系统时间之后
@Max(value) 限制必须为一个不大于指定值的整数
@Min(value) 限制必须为一个不小于指定值的整数
@Past 验证是否在系统时间之前
@Pattern(value) 限制必须符合指定的正则表达式
@Size(max,min) 限制字符长度必须在min到max之间
@Past 验证注解的元素值(日期类型)比当前时间早
@NotEmpty 不为null且长度必须大于0,常用在集合上
@NotBlank 只能用在字符串上,trim()的情况下长度必须大于0
@Email 验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式
@Range 被注释的元素必须在指定的范围了
@Length 被注释的字符串长度必须在指定的范围内
@Validated和@Valid的区别:

@Validated:用在类型、方法和方法参数上。但不能用于成员属性(field)上;提供分组功能(如果@Validated 注解加分组参数,那么会校验对应字段,不校验其他字段);支持排序功能
@Valid:可以用在方法、构造函数、方法参数和成员属性(field)上;不提供分组功能;不支持排序功能

注意事项:

  1. 校验@ResponseBody参数,参数列表里一定要有@Validation

  2. 校验@RequestParam,@PathVariable参数,类上一定要有@Validation

  3. 集合校验

public class ValidationList<E> implements List<E> {
 
    @Delegate // @Delegate是lombok注解
    @Valid // 一定要加@Valid注解
    public List<E> list = new ArrayList<>();
 
    // 一定要记得重写toString方法
    @Override
    public String toString() {
        return list.toString();
    }
}

参考链接:https://itsoku.blog.csdn.net/article/details/108373429

@Conditional

参考链接: https://blog.csdn.net/xcy1193068639/article/details/81491071

@ConitionalOnBean

@ConitonalOnBean({Conitional1.class,Conitional2.class})

spring ioc容器有两个其中之一是bean会注入

@ConitionalOnMissingBean

@ConitonalOnMissingBean({Conitional1.class,Conitional2.class})

spring ioc容器这两个bean都没有才会注入

posted @ 2020-07-03 23:02  幻竹  阅读(190)  评论(0)    收藏  举报