使用Spring組合自定義的注釋 mscharhag操作
在本文中,我們將介紹一個(gè)非常有用的Spring功能,該功能允許我們基于一個(gè)或多個(gè)Spring注釋創(chuàng)建自己的注釋。
假設(shè)我們有一組經(jīng)常一起使用的Spring注釋。一個(gè)常見的示例是@Service和@Transactional的組合:
@Service@Transactional(rollbackFor = Exception.<b>class</b>, timeout = 5)<b>public</b> <b>class</b> UserService { ...}
如果希望在所有服務(wù)類上用這兩個(gè)注釋,現(xiàn)在不必一遍又一遍地重復(fù)注釋了,我們可以創(chuàng)建一個(gè)新注釋包含這兩個(gè)注釋。創(chuàng)建我們自己的注釋非常簡(jiǎn)單,如下所示:
@Service@Transactional(rollbackFor = Exception.<b>class</b>, timeout = 5)@Retention(RetentionPolicy.RUNTIME)<b>public</b> @<b>interface</b> MyService {}
注釋是使用@interface關(guān)鍵字定義的(而不是類或接口)。標(biāo)準(zhǔn)Java注釋@Retention用于指示注釋應(yīng)在運(yùn)行時(shí)可處理。我們還將兩個(gè)Spring注釋都添加到了注釋中。
現(xiàn)在,我們可以使用自己的@MyService批注來批注我們的服務(wù):
@MyService<b>public</b> <b>class</b> UserService { ...}
Spring現(xiàn)在檢測(cè)到@MyService被@Service和@Transactional注釋,并提供與前面的示例UserService相同的行為。
請(qǐng)注意,這是Spring注釋處理方式的功能,而不是一般的Java功能。
自定義注釋可以在各種情況下使用,以提高代碼的可讀性。這是另外兩個(gè)可能派上用場(chǎng)的例子。
也許我們?cè)诖a的各個(gè)位置都需要一個(gè)屬性值。通常使用Spring的@Value注釋注入屬性:
<font><i>// injects configuration properties my.api.key</i></font><font>@Value(</font><font>'${my.api.key}'</font><font>) <b>private</b> String apiKey;</font>
在這種情況下,我們可以將屬性表達(dá)式從代碼中移到單獨(dú)的注釋中:
@Value(<font>'${my.api.key}'</font><font>)@Retention(RetentionPolicy.RUNTIME)<b>public</b> @<b>interface</b> ApiKey {}</font>
現(xiàn)在,在我們的代碼中,我們可以使用@ApiKey而不是在各處重復(fù)屬性表達(dá)式:
@ApiKey<b>private</b> String apiKey;
另一個(gè)例子是集成測(cè)試。在測(cè)試中,通常使用各種Spring批注來定義測(cè)試設(shè)置。可以使用自定義注釋將這些注釋分組在一起。例如,我們可以創(chuàng)建一個(gè)@MockMvcTest注釋,該注釋定義模擬mvc測(cè)試的Spring設(shè)置:
@SpringBootTest@AutoConfigureMockMvc(secure = false)@TestPropertySource(locations = <font>'classpath:test.properties'</font><font>)@ExtendWith(SpringExtension.<b>class</b>)@Retention(RetentionPolicy.RUNTIME)<b>public</b> @<b>interface</b> MockMvcTest {}</font>
現(xiàn)在,我們的測(cè)試定義看起來更加清晰。我們只需要添加@MockMvcTest即可獲得完整的測(cè)試設(shè)置:
@MockMvcTest<b>public</b> <b>class</b> MyTest { ...}
總結(jié)
到此這篇關(guān)于使用Spring組合自定義的注釋 mscharhag操作的文章就介紹到這了,更多相關(guān)spring 自定義注釋內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. XML入門的常見問題(四)2. 使用css實(shí)現(xiàn)全兼容tooltip提示框3. 詳解CSS偽元素的妙用單標(biāo)簽之美4. 詳解PHP實(shí)現(xiàn)HTTP服務(wù)器過程5. 低版本IE正常運(yùn)行HTML5+CSS3網(wǎng)站的3種解決方案6. html小技巧之td,div標(biāo)簽里內(nèi)容不換行7. ASP刪除img標(biāo)簽的style屬性只保留src的正則函數(shù)8. XML入門的常見問題(一)9. HTML DOM setInterval和clearInterval方法案例詳解10. ASP中格式化時(shí)間短日期補(bǔ)0變兩位長(zhǎng)日期的方法
