本文包含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
- 在Spring Boot中另外可用:
- @ConditionalOnBean
- @ConditionalOnMissingBean
- @ConditionalOnClass
- @ConditionalOnMissingClass
- @ConditionalOnProperty
- @ConditionalOnMissingProperty
- 在Spring Boot中另外可用:
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)上進行分叉。