Spring Boot應用程式中的常用註釋列表

banq發表於2020-04-08


本文包含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

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)上進行分叉。

相關文章