用Spring組合自定義的註釋 - mscharhag
在本文中,我們將介紹一個非常有用的Spring功能,該功能允許我們基於一個或多個Spring註釋建立自己的註釋。
假設我們有一組經常一起使用的Spring註釋。一個常見的示例是@Service和@Transactional的組合:
@Service @Transactional(rollbackFor = Exception.class, timeout = 5) public class UserService { ... } |
如果希望在所有服務類上用這兩個註釋,現在不必一遍又一遍地重複註釋了,我們可以建立一個新註釋包含這兩個註釋。建立我們自己的註釋非常簡單,如下所示:
@Service @Transactional(rollbackFor = Exception.class, timeout = 5) @Retention(RetentionPolicy.RUNTIME) public @interface MyService {} |
註釋是使用@interface關鍵字定義的(而不是類或介面)。標準Java註釋@Retention用於指示註釋應在執行時可處理。我們還將兩個Spring註釋都新增到了註釋中。
現在,我們可以使用自己的@MyService批註來批註我們的服務:
@MyService public class UserService { ... } |
Spring現在檢測到@MyService被@Service和@Transactional註釋,並提供與前面的示例UserService相同的行為。
請注意,這是Spring註釋處理方式的功能,而不是一般的Java功能。
自定義註釋可以在各種情況下使用,以提高程式碼的可讀性。這是另外兩個可能派上用場的例子。
也許我們在程式碼的各個位置都需要一個屬性值。通常使用Spring的@Value註釋注入屬性:
// injects configuration properties my.api.key @Value("${my.api.key}") private String apiKey; |
在這種情況下,我們可以將屬性表示式從程式碼中移到單獨的註釋中:
@Value("${my.api.key}") @Retention(RetentionPolicy.RUNTIME) public @interface ApiKey {} |
現在,在我們的程式碼中,我們可以使用@ApiKey而不是在各處重複屬性表示式:
@ApiKey private String apiKey; |
另一個例子是整合測試。在測試中,通常使用各種Spring批註來定義測試設定。可以使用自定義註釋將這些註釋分組在一起。例如,我們可以建立一個@MockMvcTest註釋,該註釋定義模擬mvc測試的Spring設定:
@SpringBootTest @AutoConfigureMockMvc(secure = false) @TestPropertySource(locations = "classpath:test.properties") @ExtendWith(SpringExtension.class) @Retention(RetentionPolicy.RUNTIME) public @interface MockMvcTest {} |
現在,我們的測試定義看起來更加清晰。我們只需要新增@MockMvcTest即可獲得完整的測試設定:
@MockMvcTest public class MyTest { ... } |
相關文章
- IDEA自定義註釋Idea
- IDEA自定義類註釋和方法註釋(自定義groovyScript方法實現多行引數註釋)Idea
- Spring 自定義註解(上)Spring
- Spring Boot 自定義註解Spring Boot
- IDEA自定義註釋模板Idea
- Spring Boot 自定義註解失效Spring Boot
- Spring:如何實現註解的組合Spring
- Android自定義組合控制元件之自定義屬性Android控制元件
- 你的開發利器Spring自定義註解Spring
- Android自定義控制元件之自定義組合控制元件Android控制元件
- 自定義註解以及註解在反射中的應用反射
- iOS 註釋方法大全 程式碼塊加快捷鍵自定義註釋iOS
- 自定義註解
- 11-自定義組合控制元件以及使用控制元件
- Spring Boot 自動配置之組合註解Spring Boot
- Java中的註解-自定義註解Java
- spring boot啟動掃描不到自定義註解Spring Boot
- 如何在Eclipse中如何自動新增註釋和自定義註釋風格Eclipse
- 自定義JAVA註解Java
- java 自定義註解Java
- Java 自定義註解Java
- 省掉bean自定義spring mvc註解注入json值BeanSpringMVCJSON
- java自定義註解學習(三)_註解解析及應用Java
- SpringBoot分組校驗及自定義校驗註解Spring Boot
- Java 自定義註解在登入驗證的應用Java
- 【iOS 小技巧】Xcode自定義檔案頭部註釋iOSXCode
- 自定義註解@MyBatisRepositoryMyBatis
- 【轉】 java自定義註解Java
- Android自定義註解Android
- 自定義Spring ShellSpring
- Spring自定義MVCSpringMVC
- Spring Boot應用程式中的常用註釋列表Spring Boot
- 高階自定義View — 粒子變幻、隧道雜湊、組合文字View
- 高階自定義View --- 粒子變幻、隧道雜湊、組合文字View
- Spring Boot @Condition 註解,組合條件你知道嗎Spring Boot
- Java中的註解-自定義註解處理器Java
- 自定義的單元格合併
- 【Spring註解驅動開發】自定義TypeFilter指定@ComponentScan註解的過濾規則SpringFilter