用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
- IDEA自定義註釋模板Idea
- Spring Boot 自定義註解失效Spring Boot
- 你的開發利器Spring自定義註解Spring
- Spring:如何實現註解的組合Spring
- 設計模式(三十)----綜合應用-自定義Spring框架-自定義Spring IOC-定義bean、登錄檔相關類設計模式Spring框架Bean
- 自定義註解以及註解在反射中的應用反射
- 設計模式(三十一)----綜合應用-自定義Spring框架-自定義Spring IOC-定義解析器、IOC容器相關類設計模式Spring框架
- 省掉bean自定義spring mvc註解注入json值BeanSpringMVCJSON
- spring boot啟動掃描不到自定義註解Spring Boot
- 自定義註解
- 如何在Eclipse中如何自動新增註釋和自定義註釋風格Eclipse
- Java中的註解-自定義註解Java
- Spring Boot 自動配置之組合註解Spring Boot
- springBoot自定義註解的使用Spring Boot
- SpringBoot分組校驗及自定義校驗註解Spring Boot
- 自定義ConditionalOnXX註解
- 自定義JAVA註解Java
- 自定義Spring ShellSpring
- 設計模式(二十九)----綜合應用-自定義Spring框架-Spring IOC相關介面分析設計模式Spring框架
- 【Spring註解驅動開發】自定義TypeFilter指定@ComponentScan註解的過濾規則SpringFilter
- java自定義註解學習(三)_註解解析及應用Java
- Spring Boot應用程式中的常用註釋列表Spring Boot
- generatorConfig自動生成實體類以及自定義生成註釋的方法
- Java 自定義註解在登入驗證的應用Java
- keycloak~使用自定義的註冊頁
- spring 自定義標籤Spring
- 自定義 Spring Boot StarterSpring Boot
- Spring Boot 自定義 starterSpring Boot
- 自定義Spring Boot StarterSpring Boot
- Spring Boot @Condition 註解,組合條件你知道嗎Spring Boot
- Spring 實現策略模式--自定義註解方式解耦if...elseSpring模式解耦
- ansible自定義模組
- Spring中如何使用自定義註解搭配@Import引入內外部配置並完成某一功能的啟用SpringImport
- 使用AOP+自定義註解完成spring boot的介面許可權校驗Spring Boot
- java中如何自定義註解Java
- SpringBoot自定義校驗註解Spring Boot