spring為類的靜態(tài)屬性實(shí)現(xiàn)注入實(shí)例方法
我們知道,正常情況下,spring的一個(gè)bean要依賴其他資源,如properties或其他bean,直接利用@Value或@Autowired就可以了。這兩個(gè)注解就相當(dāng)于spring application context xml文件定義bean時(shí)的property節(jié)點(diǎn)。相當(dāng)于調(diào)用了每個(gè)屬性的set方法。
<bean id="person" class="com.myapp.core.spel.xml.Person"> <property name="book" value="book" /> <property name="bookName" value="#{book.name}"/> </bean>
然而,當(dāng)一個(gè)java類里的靜態(tài)方法需要引用一個(gè)spring資源時(shí),我們需要定義靜態(tài)屬性,然后通過顯示聲明它們的set方法(注意,這個(gè)set方法是非靜態(tài)的哦),來實(shí)現(xiàn)靜態(tài)屬性的注入。
見如下示例代碼,其中dingdingReceiverMan屬性的set方法通過@Value注解來注入一個(gè)配置
“monitor_log.dingding.receiverMan”;redisUtil屬性的set方法通過@Autowired注解來注入一個(gè)bean——被@Component修飾的類“RedisUtil”。
@Component @Slf4j public class SendWarningMessage { private static String dingdingReceiverMan; private static RedisUtil redisUtil; static final String ACC_MONITOR_REDIS_KEY_PREFIX = "ACC_MONITOR_"; @Value("${monitor_log.dingding.receiverMan}") public void setDingdingReceiverMan(String value) { dingdingReceiverMan = value; } @Autowired public void setRedisUtil(RedisUtil value) { redisUtil = value; } public static void sendMsg(String mobile, String msg) { ... String redisKey = ACC_MONITOR_REDIS_KEY_PREFIX + MD5Util.md5(warningMsg); if (redisUtil.get(redisKey) != null) { log.info("手機(jī)號(hào)近期發(fā)過,為防止頻繁發(fā)送,本次不發(fā)。 {}", mobile); } else { log.info("發(fā)送的消息:{}", warningMsg); DingdingUtil.sendDingDing(dingdingReceiverMan, warningMsg); redisUtil.set(redisKey, warningMsg, 5 * 60); } ... } }
以上就是本次知識(shí)點(diǎn)的全部相關(guān)代碼,感謝大家的學(xué)習(xí)和對(duì)腳本之家的支持。
相關(guān)文章
JSP頁面pageEncoding和contentType屬性
有關(guān)于JSP頁面中pageEncoding和contentType屬性。2013-04-04Java實(shí)現(xiàn)后臺(tái)發(fā)送及接收json數(shù)據(jù)的方法示例
這篇文章主要介紹了Java實(shí)現(xiàn)后臺(tái)發(fā)送及接收json數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了java針對(duì)json格式數(shù)據(jù)的傳輸與操作相關(guān)技巧,需要的朋友可以參考下2018-12-12Servlet+JDBC實(shí)現(xiàn)登陸功能的小例子(帶驗(yàn)證碼)
這篇文章主要介紹了Servlet+JDBC實(shí)現(xiàn)登陸功能的小例子(帶驗(yàn)證碼),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06PowerJob的ServerDiscoveryService工作流程源碼解讀
這篇文章主要為大家介紹了PowerJob的ServerDiscoveryService工作流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12SpringBoot日志框架之Log4j2快速入門與參數(shù)詳解
本文介紹了SpringBoot日志框架log4j2的基本使用和配置方法,包括將日志輸出到控制臺(tái)、文件、Elasticsearch和Kafka,多個(gè)輸出目的地的配置,異步日志記錄器的使用以及l(fā)og4j2.xml配置文件的詳細(xì)語法和參數(shù)含義,需要的朋友可以參考下2023-05-05