springcloud config 相對Alibaba Nacos來說要麻煩很多。
Alibaba Nacos不僅可作為配置中心還可以作為服務註冊中心。
環境:springboot2.2.10+nacos1.3.2
一、安裝nacos
在如上地址下載相應版本的nacos。
下載後解壓,啟動:
啟動命令(standalone代表著單機模式執行,非叢集模式):
bin/startup.sh -m standalone
訪問:
預設埠是8848,預設的使用者名稱密碼都是nacos。
二、配置nacos
進入管理介面,先建立幾個不同的開發環境,開發,生產,測試:
建立不同環境的使用者,角色:
許可權控制=》使用者列表:
許可權控制=》角色管理:
許可權控制=》許可權管理:
配置管理=》配置列表:
這列表中列出了所有的環境。
退出當前nacos使用者切換到dev賬戶登入
在dev使用者下進入配置管理=》配置列表:
在這環境下,配置一個nacos-config-dev.properties
nacos-config-dev.properties內容如下:
這裡簡單配置一個mysql的資料庫連線資訊
到這裡nacos的配置就完成了,接下來看看專案中如何使用。
三、專案中使用nacos
pom.xml
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.2.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies>
src/main/resources 下新建bootstrap.yml
關於該bootstrap.yml配置檔案
application.yml是使用者級的資源配置項
bootstrap.yml是系統級的,優先順序更加高
SpringCloud會建立一個'Bootstrap Context',作為Spring應用的'Application Context'的父上下文.初始化的時候,'Bootstrap Context'負責從外部源載入配置屬性並解析配置.這兩個上下文共享一個從外部獲取的'Environment'.'Bootstrap'屬性有高優先順序,預設情況下,他們不會被本地配置覆蓋.'Bootsrap context'和'Application Context'有著不同的約定,所以新增了一個'bootstrap.yml'檔案,保證'Bootstrap Context'和'Application Context'配置的分離。
bootstrap.yml內容如下:
spring: cloud: nacos: username: dev password: 123123 config: enabled: true serverAddr: localhost:8848 fileExtension: properties # group: study #這裡的組就是在配置中心新建的時候指定的組名稱 namespace: 3d857485-5f81-4f1b-9a7e-86586d05261f #這裡就是新建名稱空間的時候系統生成的唯一標識---spring: application: name: nacos-config #注意這裡的名稱結合profiles.active就是配置中心中配置的命名方式。---spring: profiles: active: - dev
application.yml配置檔案:
spring: jpa: properties: hibernate: dialect: org.hibernate.dialect.MySQL5InnoDBDialect datasource: driverClassName: ${jdbc.driver} url: ${jdbc.url} username: ${jdbc.username} password: ${jdbc.password} type: com.zaxxer.hikari.HikariDataSource hikari: minimumIdle: 10 maximumPoolSize: 200 autoCommit: true idleTimeout: 30000 poolName: MasterDatabookHikariCP maxLifetime: 1800000 connectionTimeout: 30000 connectionTestQuery: SELECT 1
這裡透過${xxx}表示式的方式來訪問已經定義好的屬性配置(這裡的這些${xxx}就是在配置中心中配置的內容,bootstrap.yml已經為我們載入好了)
測試:
@RestController@RequestMapping("config")public class ConfigController { @Value("${jdbc.url}") private String url; @GetMapping(value = "/get") public boolean get() { System.out.println(url) ; return url; }}
訪問後檢視控制檯:
這裡啟動服務時就已經打印出了相關的資訊,方法介面也輸出了在nacos中配置的資訊。
完畢!!!