Nacos 配置中心:動態加載 Bean

前提:?已經集成好 springboot / cloud?與nacos的環境

1 nacos中配置文件參數

message:#sender: emailMessageSendersender: smsMessageSender

2?接口和兩個實現類

public interface MessageSender {String sendMessage(String message, String recipient);
}import org.springframework.stereotype.Service;
@Service("emailMessageSender")
public class EmailMessageSender implements MessageSender {@Overridepublic String sendMessage(String message, String recipient) {StringBuilder append = new StringBuilder().append("郵件發送成功,收信人:").append(recipient).append(",郵件內容:").append(message);return append.toString();// 實際的郵件發送邏輯...}
}import org.springframework.stereotype.Service;
@Service("smsMessageSender")
public class SmsMessageSender implements MessageSender {@Overridepublic String sendMessage(String message, String recipient) {StringBuilder append = new StringBuilder().append("短信發送成功,短信內容:").append(message).append(",接收人:").append(recipient);return append.toString();// 實際的短信發送邏輯...}
}

3?動態bean切換配置,注意@RefreshScope,有兩處

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
@RefreshScope
public class MessageSenderConfig {@Autowiredprivate ApplicationContext applicationContext;@Value("${message.sender}")private String messageSenderBeanName;@Bean@RefreshScopepublic MessageSender messageSender() {// 根據Nacos配置動態獲取對應的Beantry {return (MessageSender) applicationContext.getBean(messageSenderBeanName);} catch (BeansException e) {throw new RuntimeException("未找到對應的處理器");}}
}

4?controller層調用

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/notification")
public class Controller_Notification {@Autowiredprivate MessageSender messageSender;@RequestMapping("/sendNotification")public String sendNotification(String message, String recipient){String s = messageSender.sendMessage(message, recipient);return s;}}

5?測試,修改nacos的配置文件,就可以動態調用不同的bean,實現不同的功能

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/39524.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/39524.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/39524.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

模電-二極管及其應用51單片機LED點亮前置工作!

今日小記 2024-7-2,星期二,16:32,天氣:晴,心情:晴。持續了兩個星期的梅雨天終于暫時過去啦,迎來了久違的陽光,雖然沒有雨天涼快,但是能看到太陽也是開心噠,心…

2021強網杯

一、環境 網上自己找 二、步驟 2.1拋出引題 在這個代碼中我們反序列&#xff0c;再序列化 <?php$raw O:1:"A":1:{s:1:"a";s:1:"b";};echo serialize(unserialize($raw));//O:1:"A":1:{s:1:"a";s:1:"b";…

工業 web4.0UI 風格品質卓越

工業 web4.0UI 風格品質卓越

深入理解 RabbitMQ、RocketMQ等常?的消息中間件進?消息的異步數據處理

深入理解消息中間件對于構建高可用、高性能的分布式系統至關重要。以下是對RabbitMQ和RocketMQ這兩種常用消息中間件的異步數據處理的深入理解&#xff1a; ### RabbitMQ RabbitMQ是一個開源的消息代理&#xff0c;它支持多種消息協議&#xff0c;如AMQP、STOMP等&#xff0c;…

單向鏈表結構

鏈表結構簡介 鏈表結構是一種用比較特殊的數據結構類型&#xff0c;它也是線性數據結構中的一種&#xff0c;但是與棧結構等線性數據結構不同&#xff0c;它的內部結構并不是一個簡單的存儲空間&#xff0c;而是一個帶有指向性質的單元。要理解鏈表結構要弄清楚兩個問題&#x…

不要再被騙了!電腦無法進入系統的原因可能是這個硬件壞了而已……

前言 前段時間小白在抖音上發了很多很多很多的視頻&#xff0c;其中應該是有很多商家關注了小白。 然后就會出現很多很多很多的賺錢小門道…… 電腦開機沒有顯示&#xff1f;換顯卡&#xff01; 電腦還是不開機&#xff1f;換CPU 電腦還是一樣不開機…… 經過了一番大折騰…

10.8K star!史上最強Web應用防火墻雷池WAF

長亭雷池SafeLine是長亭科技耗時近 10 年傾情打造的WAF(Web Application Firewall)&#xff0c; 一款敢打出口號 “不讓黑客越雷池一步” 的 WAF&#xff0c;愿稱之為史上最強的一款Web應用防火墻&#xff0c;足夠簡單、足夠好用、足夠強的免費且開源的 WAF&#xff0c;基于業…

AI為小微企業賦能:解鎖數字化轉型的金鑰匙

AI為小微企業賦能&#xff1a;解鎖數字化轉型的金鑰匙 在當今全球經濟加速迭代的背景下&#xff0c;小微企業作為社會經濟肌體的毛細血管&#xff0c;面臨著前所未有的挑戰與機遇。人工智能&#xff08;AI&#xff09;的崛起&#xff0c;如同一股強大的科技旋風&#xff0c;為…

binlog區分業務修改還是手動修改

一、Windows下開啟MySQL binLog日志 首先要開啟MySQL的BinLog 管理 show variables like %log_bin%;如果發現log_bin是OFF&#xff0c;打開mysql文件夾下面的my.ini&#xff0c;修改一下 在 [mysqld] 下面加 # 開啟bin-log log-binmysql-bin # 開啟binlog功能 binl…

pads layout 腳本導出不能運行excle解決辦法

在一臺新的電腦上安裝好PADS&#xff0c;打開PCB文件導出坐標文件時&#xff1a; 出現“ActiveX Automation: server could not be found.”的問題,導致無法成功導出文件,錯誤提示截圖如下&#xff1a; 導致上述問題的原因是在我們配置導出帶坐標的腳本時,默認使用的是微軟…

Java 實現application/x-www-form-urlencoded編碼格式的POST請求

一、實現方式 在Java中&#xff0c;實現application/x-www-form-urlencoded內容類型通常涉及到發送HTTP POST請求。你可以使用java.net.HttpURLConnection或者第三方庫如Apache HttpClient來實現。 以下是使用HttpURLConnection發送application/x-www-form-urlencoded數據的代…

linux的shell腳本編程詳解

Shell 腳本是一種用于自動化任務的腳本語言&#xff0c;在 Linux 和其他類 Unix 操作系統中非常流行。它通常用于任務自動化、系統管理和批處理。編寫 Shell 腳本并使其自動化編譯過程&#xff08;例如使用 gcc 編譯 C/C 程序&#xff09;是一種常見的任務。 以下是一個詳細的…

昇思MindSpore學習筆記3--張量 Tensor

一、張量Tensor概念 矢量、標量和其他張量的計算函數&#xff0c;有內積、外積、線性映射以及笛卡兒積等 張量坐標在 n?維空間內&#xff0c;有?nr 個分量 每個分量都是坐標的函數,變換時每個坐標分量都按規則作線性變換 張量是一種特殊的數據結構&#xff0c;類似于數組和…

利用深度學習模型進行語音障礙自動評估

語音的產生涉及器官的復雜協調&#xff0c;因此&#xff0c;語音包含了有關身體各個方面的信息&#xff0c;從認知狀態和心理狀態到呼吸條件。近十年來&#xff0c;研究者致力于發現和利用語音生物標志物——即與特定疾病相關的語音特征&#xff0c;用于診斷。隨著人工智能&…

js基礎學習

1、js概述 js是javascript的簡稱&#xff0c;作用是實現頁面和用戶的交互 js由瀏覽器解析運行&#xff0c;不需要編譯 js由es基礎語法&#xff0c;bom瀏覽器相關&#xff0c;dom文檔操作相關 三大部分組成 2、html引入js <!DOCTYPE html> <html lang"zh-CN&qu…

Vue項目打包上線

Nginx 是一個高性能的開源HTTP和反向代理服務器&#xff0c;也是一個IMAP/POP3/SMTP代理服務器。它在設計上旨在處理高并發的請求&#xff0c;是一個輕量級、高效能的Web服務器和反向代理服務器&#xff0c;廣泛用于提供靜態資源、負載均衡、反向代理等功能。 1、下載nginx 2、…

k8s學習--k8s群集ELK日志收集部署最詳細的過程與應用(收集k8s群集日志)(圖形化界面手把手教學)

文章目錄 FilebeatFilebeat主要特點Filebeat使用場景 ELK簡介Elasticsearch簡介Elasticsearch主要特點Elasticsearch使用場景 Logstash簡介Logstash主要特點Logstash使用場景 Kibana簡介Kibana主要特點Kibana使用場景 簡單理解 環境一、ELK集群部署1.軟件安裝2.軟件配置及啟動(…

Webpack: Loader開發 (2)

概述 在上一篇文章中&#xff0c;我們已經詳細了解了開發 Webpack Loader 需要用到的基本技能&#xff0c;包括&#xff1a;Loader 基本形態、如何構建測試環境、如何使用 Loader Context 接口等。接下來我們繼續拓展學習一些 Loader 輔助工具&#xff0c;包括&#xff1a; 了…

telegram支付

今天開始接入telegram支付,參考教程這個是telegram的官方說明,詳細介紹了機器人支付API。 文章公開地址 新建機器人 因為支付是一個單獨的系統,所以在做支付的時候單獨創建了一個bot,沒有用之前的bot了,特意這樣將其分開。創建bot的方法和之前不變,這里不過多介紹。 獲…

Linux文件數據寫入

結構體 fd fd也就是文件描述符&#xff0c;用于標識已經打開的文件、管道、socket等。是進程和內核的橋梁&#xff0c;允許進程執行各種文件操作 struct fd {struct file *file;unsigned int flags; };file Linux內核中表示打開文件的結構體&#xff0c;包含了文件操作所需…