SpringBoot注解笔记

郎家岭伯爵 2021年10月21日 555次浏览

背景

本文用以记录学习SpringBoot过程中遇到的注解的作用。

实现

配置类的值

方式一

@Component:注入容器
@ConfigurationProperties(prefix = "person"):用yaml配置文件配置类的值

方式二

@Value(name = "zhangsan"):对配置类的单个属性赋值

数据校验

JSR303数据校验注解
@Validated:开启数据校验功能
@Email(message = "邮箱格式错误!"):校验数据为邮箱格式

注意需要引入依赖:

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

@RestController

在Spring中@RestController的作用等同于@Controller + @ResponseBody 注解.
@Controller:将类声明为控制器
@ResponseBody:将控制器的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到Response对象的body区,通常用来返回JSON数据或者是XML数据


@GetMapping("/hello")

用于处理 HTTP 的 GET 请求。本质是 @RequestMapping(method = RequestMethod.GET)

lombok

SpringBoot中引入依赖:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

@Data:注在类上,提供类的get、set、equals、hashCode、canEqual、toString方法
@AllArgsConstructor:注在类上,提供类的全参构造
@NoArgsConstructor:注在类上,提供类的无参构造
@Setter:注在属性上,提供 set 方法
@Getter:注在属性上,提供 get 方法
@EqualsAndHashCode:注在类上,提供对应的 equals 和 hashCode 方法
@Log4j/@Slf4j:注在类上,提供对应的 Logger 对象,变量名为 log

@Component

将对象托管给Spring,从而可以在对象上使用Spring的注解。

  • @Component注解有几个衍生注解,在Web开发中,会按照MVC三层架构分层,因此所对应的有三个@Component衍生出的注解。
  • 衍生出的注解与@Component注解的功能是完全一致的,都是代表将类注册到Spring中,即:装配Bean。
  • 衍生出的注解意在更好地区分MVC三层结构。

@Repository

@Component的衍生注解,用于Dao层

@Service

@Component的衍生注解,用于Service层

@Controller

@Component的衍生注解,用于Controller层

@Autowired

@Autowired可以对类成员变量、方法及构造函数进行标注,让 spring 完成 bean 自动装配的工作。
@Autowired默认是按照类去匹配,配合 @Qualifier 指定按照名称去装配 bean。
@Autowired注解必须定义在有效的spring bean内,也就是说只有本身作为bean的类才能注入其他对象。因此需要配合@Component注解或者其衍生注解才可使用。

@RequestParam("username")

把前端请求中的指定名称的参数传递给控制器中的形参(后端)赋值,即用于前后端数据传输。


@RequestHeader(value = "token",required = false) String token

用于获取HTTP请求头Header的数据。value用于获取Header中指定名称的参数,required表示是否必传。

@Async

异步任务的注解


@Scheduled(cron = "0 * * * * *")

定时任务注解。cron表达式用来设置任务执行的时间/周期,可参考cron在线生成器使用表达式。


@Slf4j

日志注解。

需要引入lombok依赖:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

可通过properties文件配置日志输出,例如:

#日志文件
logging.file.name=LogFile/ApiCalling.log
logging.level.root=info
logging.file.max-size=5MB