Spring注解大全

252 阅读3分钟

Spring

@AutoConfigureBefore

@AutoConfigureBefore(BBB.class)
public class AAA {

}

说明AAA会在BBB之前加载;

@Configuration

@ContextConfiguration

在单元测试里用的较多:

// 用于指定spring配置文件的位置。如果是类路径下,需要用 classpath:表明
@ContextConfiguration(locations= {"classpath:bean.xml"}) 
// 用于指定注解的类。当不使用 xml 配置时,需要用此属性指定注解类的位置。
@ContextConfiguration(classes = {RedisConfig.class})

@EnableCaching

spring framework中的注解驱动的缓存管理功能。

当你在配置类@Configuration上使用@EnableCaching注解时,会触发一个post processor,这会扫描每一个spring bean,查看是否已经存在注解对应的缓存,如果找到了,就会自动创建一个代理拦截方法调用,使用缓存的bean执行处理。

segmentfault.com/a/119000001…

@PropertySource

声明配置文件存放的地方,一般来说内部配置文件约定是放置在我们创建的resources文件夹下。当然我们也可以在此文件夹下创建目录,同时更改注解存放的地址即可。如果要读取的值存放到内部不同文件夹,此时我们需要@PropertySource,要是读取的多个配置文件中对应的键一样,此时会以最后读取的配置文件中的值进行覆盖。

@PropertySource("classpath:redis.properties") 

classpath: class的path,也就是类文件的路径。

开发时期的项目里,src/main/下面的java和resources文件夹都被打包到了生产包的WEB-INF/classes/目录下,而原来的WEB-INF下面的views和web.xml仍然还是在WEB-INF下面,同时由maven引入的依赖都被放入到了WEB-INF/lib下面。最后,编译后的class文件和资源文件都放在了classes目录下。

编译打包后的项目中,classes这个文件夹就是我们要找的classpath

@Value:将配置文件中key对应的值赋值给它标注的属性。

@value注解读取找到的配置文件中的值,$起到占位符的作用,要是指定配置文件不存在或者找到的配置文件的值和声明注解的占位符不匹配,则抛出异常。

@Validated

@Resource

@RequestParams

从查询字段中提取值;

http://localhost:8000/foos?id=abc

@PathVariable

http://localhost:8000/foos/{id}

从URI path中提取值

ResponseEntity

@RequestBody

序列化:

@RequestBody将JSON反序列化为JavaType。

@ResponseBody

将JavaType自动序列化为JSON,

@Transactional

  • 事务管理
    • 编程式事务管理
    • 声明式事务管理
      • xml配置文件
      • @Transactional注解
@Transactional(rollbackFor = Exception.class)

抛出异常时会回滚数据:

如果没有rollbackFor = Exception.class,那么事务只会在遇到RuntimeException的时候才会回滚,加上rollbackFor = Exception.class,可以让事务在运行到非运行时异常时也回滚。

Lombok

lombok是一个工具类库,用注解来简化代码。lombok注解在java进行编译时进行代码的构建。

@Data

提供类的get、set、equals、hashCode、canEqual、toString方法

@NoArgsConstructor

提供类的无参构造

@AllArgsConstructor

提供类的全参构造

@Table

完成表和实体之间的映射;

@Builder

fasterxml

@JsonInclude

  1. @JsonInclude(JsonInclude.Include.NOT_EMPTY):属性为空时不参与序列化

  2. @JsonInclude(JsonInclude.Include.NOT_NULL):属性为null不参与序列号

@JsonIgnoreProperties

忽略类中不存在的字段;

@JsonIgnoreProperties(ignoreUnknown = true) 还可以指定忽略类中多个字段在类被转成json的格式忽略掉,

@sonIgnoreProperties(ignoreUnknown = true)

Swagger

@ApiModel