本文包含Spring Boot应用程序中常用注解的不完整列表。此列表旨在快速查找,有关详细和全面的信息,请阅读Java官方文档和文档。
Spring Core
- @Bean 注释的方法会产生一个由Spring IoC容器管理的bean
- Stereotype注释
- @Component-将带注释的类标记为组件扫描找到的并加载到应用程序上下文中的bean
- @Controller 注释的类标记为包含请求处理程序的Spring MVC的bean
- @RestController 注释的类标记为@Controllerbean,并添加@ResponseBody以消息形式序列化返回的结果
- @ Configuration-将带注释的类标记为定义bean的Java配置
- @Service 注释的类标记为Bean(通常包含业务逻辑的约定)
- @Repository 标记注释类为bean(如约定通常提供的数据访问),并增加从SQLException到DataAccessExceptions自动翻译
bean状态
- @PostConstruct-注解方法在完成依赖项注入后执行初始化
- @PreDestroy注释的方法在销毁bean之前执行,例如在关闭时
组态配置
- @Import-导入一个或多个Java配置类@Configuration
- @PropertySource-指示applicaiton.properties将键值对添加到Spring 的文件的位置Environment
- @Value 注释的字段和参数值将被注入
- @ComponentScan 配置扫描@Compenent,@Service等等组件。
bean属性
- @Lazy 注释的bean将在第一次使用时被延迟初始化
- @Profile 表示仅在定义的配置文件处于活动状态时才会初始化bean
- @Scope 定义bean的创建范围,例如原型,单例等。
- @DependsOn 根据创建顺序明确定义对其他bean的依赖关系
- @Order 如果注入一个bean列表,则定义排序顺序,但是如果只需要一个bean,它不会解决优先级
- @Primary 如果可以自动装配多个bean,则将选择带注释的bean
- @Conditional-仅在满足条件的情况下才创建带注释的Bean
bean注射
- @Autowired Bean注入带注释的setter,字段或构造函数参数中。
- @Qualifier-指定bean的名称作为附加条件,以标识用于自动装配的唯一候选对象
SpringBoot
- @SpringBootConfiguration-指示Spring Boot应用程序@Configuration
- @EnableAutoConfiguration-启用应用程序上下文自动配置,以根据类路径提供可能需要的bean
- @ConfigurationProperties-提供键值属性的外部绑定
- @ConfigurationPropertiesScan-启用@ConfigurationProperties类的自动检测
- @SpringBootApplication 组合:@SpringBootConfiguration,@EnableAutoConfiguration,@ConfigurationPropertiesScan和@ComponentScan
- @EntityScan-配置基本软件包以扫描实体类
- @EnableJpaRepositories-启用jpa存储库的自动配置
SpringBoot测试
- @SpringBootTest-释的测试类将加载整个应用程序上下文以进行集成测试
- @WebMvcTest注释的测试类将仅加载Web层(服务和数据层将被忽略)
- @DataJpaTest注释的类将仅加载JPA组件
- @MockBean-注释的字段标记为模拟并将其作为Bean加载到应用程序上下文中
- @SpyBean-允许部分Mock bean
- @Mock-将带注释的字段定义为模拟mock
Spring测试
- @ContextConfiguration-定义@Configuration为集成测试加载应用程序上下文
- @ExtendWith-定义扩展以执行测试,例如MockitoExtension
- @SpringJUnitConfig-结合@ContextConfiguration和@ExtendWith(SpringExtension.class)
- @TestPropertySource-定义集成测试中使用的属性文件的位置
- @DirtiesContext-指示带注释的测试弄脏了应用程序上下文,并且将在每次测试后清除
- @ActiveProfiles-定义在初始化测试应用程序上下文时应加载哪个活动bean定义
- @Sql-允许定义SQL脚本和语句在测试之前和之后执行
事务管理
- @EnableTransactionManagement-启用注释驱动的事务声明@Transactional
- @Transactional-带注释的方法将以事务方式执行
Spring JPA和Hibernate
- @Id 注释的字段标记为实体的主键
- @GeneratedValue-提供主键的生成策略
- @Entity 注释的类标记为实体
- @Column-为字段提供其他配置,例如列名
- @Table-为实体提供其他配置,例如表名
- @PersistenceContext - EntityManger注入注释的制定者和领域
- @Embedded 注释的字段被实例化为Embeddable类的值
- @Embeddable-带注释的类的实例存储为实体的一部分
- @EmbeddedId- 注释的属性标记为由可嵌入类映射的复合键
- @AttributeOverride-覆盖字段的默认映射
- @Transient 注释的字段不是持久性的
- @CreationTimestamp 注释的字段包含首次存储实体时的时间戳
- @UpdateTimestamp 注释的字段包含实体上次更新时的时间戳
- @ManyToOne-表示N:1关系,包含带注释字段的实体与其他类的实体具有单个关系,但另一个类具有多个关系
- @JoinColumn-指示用于在拥有方或单向连接实体@ManyToOne或@OneToOne关系的列@OneToMany
- @OneToOne-表示1:1关系
- @MapsId-引用连接拥有@ManyToOne或@OneToOne关联方的列,作为引用和被引用实体的主键
- @ManyToMany-表示N:M关系
- @JoinTable-使用联接表指定关联
- @BatchSize-定义大小以延迟加载带注释的实体的集合
- @FetchMode-定义关联的获取策略,例如,在单个子查询中加载所有实体
Spring安全
- @EnableWebSecurity-启用网络安全
- @EnableGlobalMethodSecurity-启用方法安全性
- @PreAuthorize-使用SpEL定义访问控制表达式,该表达式在调用受保护的方法之前进行评估
- @PostAuthorize-使用SpEL定义访问控制表达式,该表达式在调用受保护的方法后进行评估
- @RolesAllowed-指定允许调用受保护方法的安全角色列表
- @Secured-用于定义方法级别安全性的Java 5注释
SpringAOP
- @EnableAspectJAutoProxy-启用对标记为的组件的支持@Aspect
- @Aspect-将带注释的组件声明为包含切入点和建议的方面
- @Before-声明在将调用传播到连接点之前执行的切入点
- @AfterReturning-声明如果连接点成功返回结果则执行的切入点
- @AfterThrowing-声明如果连接点引发异常则执行的切入点
- @After-声明如果连接点成功返回结果或引发异常,则执行切入点
- @Around-声明在调用之前执行的切入点,以控制对建议的连接点的执行
- @Pointcut-外部化定义切入点表达式
此列表是经过整理的,可以在GitHub(https://github.com/gindex/spring-boot-annotation-list)上进行分叉。