Spring動態配置 : 阿里雲ACM


一、簡介  

  參考地址:https://help.aliyun.com/document_detail/59953.html?spm=a2c4g.11186623.6.542.2a337463zwN9kf

 

二、本地搭建阿里雲ACM服務

  參考地址:https://help.aliyun.com/document_detail/66462.html?spm=a2c4g.11186623.6.563.3fd373f64gdFwx

 

三、SpringBoot集成

  參考地址:https://help.aliyun.com/document_detail/60369.html?spm=a2c4g.11186623.6.589.106e90adf5TaIC

  pom文件依賴

        <dependency> 
            <groupId>org.springframework.boot</groupId> 
            <artifactId>spring-boot-starter-actuator</artifactId> 
        </dependency> 
        <dependency>
             <groupId>com.alibaba.cloud</groupId>
             <artifactId>spring-cloud-starter-acm</artifactId>
             <version>1.0.8</version>
        </dependency>

  SpringCloud和SpringBoot依賴版本

        <spring-cloud.version>Finchley.SR1</spring-cloud.version>
        <spring-boot.version>2.0.6.RELEASE</spring-boot.version>

   默認application.yml配置

spring:
  application:
    group: com.alibaba.cloud.acm
    name: test-simple1
alibaba:
  acm:
    endpoint: acm.aliyun.com
    group: test
    file-extension: yml
    namespace: 
    accessKey: 
    secretKey: 

   配置啟動參數

java 
-server -Xmx512m -Xms512m -Xmn256m -Xss512k
-Dpandora.location=/home/snowball/lib/taobao-hsf.sar-dev-SNAPSHOT.jar -Dcom.alibaba.vipserver.jmenv=jmenv.tbsite.net:8080 -Dvipserver.server.port=8080 -Dvipserver.register.ip=192.168.1.43 -Dons.client.logLevel=INFO -jar core_return.jar --alibaba.acm.endpoint=acm.aliyun.com --alibaba.acm.namespace=653fe759-fa3f-4cac-95f7-66e7fb48d50a --alibaba.acm.accessKey=1d1e1ee2ce794952b685e3a30b593c6a --alibaba.acm.secretKey=DEUDoKxuHC6yAIwfoq1uP6sbDMc= > log/log.file 2>
&1 &

 

四、特殊說明

 1、屬性動態配置,生效問題

  使用@ConfigurationProperties注解注釋的配置類,動態修改默認會立馬生效

@Data
@Configuration
@ConfigurationProperties(prefix = "system.config")
public class SystemConfig {
    private String name;
    private String value;
}

  使用@Value注解注釋的屬性,動態修改不會生效,需要重啟服務

@RestController
@RequestMapping("order")
public class OrderController {
    
    @Value("${test.config}")
    private String config;
    
    @Autowired
    SystemConfig systemConfig;
    
    @RequestMapping("saveOrder")
    public String findUserById() {
        return config;
    }
}

   2、如果需要配置修改,不會更新@ConfigurationProperties注解注釋的配置類,增加 alibaba.acm.refresh.enabled=false 配置即可。 alibaba.acm.refresh.enabled 屬性值的修改,只有重啟服務才能生效

alibaba.acm.refresh.enabled=false

 

五、多環境配置

  參考地址:https://help.aliyun.com/document_detail/85477.html?spm=a2c4g.11186623.6.552.6113407aW5Aryl

  使用 ACM 的命名空間(Namespace)功能,為應用在測試、預生產和生產環境下的同一個配置設置不同的值

  1、配置profile,同一個endpoint地址,端口地址也一致

<profiles>
        <!-- 本地環境 -->
        <profile>
            <id>public</id>
            <properties>
                <alibaba.acm.endpoint>acm.aliyun.com</alibaba.acm.endpoint>
                <server.port>8080</server.port>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <!-- 阿里雲內網環境 (上海) -->
        <profile>
            <id>aliyun</id>
            <properties>
                <alibaba.acm.endpoint>addr-sh-internal.edas.aliyun.com</alibaba.acm.endpoint>
                <server.port>8080</server.port>
            </properties>
        </profile>
    </profiles>

 

  2、啟動參數指定namespace,區分不同環境

--alibaba.acm.namespace=653fe759-fa3f-4cac-95f7-66e7fb48d50a

 

六、常見錯誤

  錯誤一:java.lang.IllegalStateException: Error processing condition on org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration.mbeanExporter

  原因:缺少 spring-boot-starter-actuator 的jar包

 

  錯誤二:java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.<init>([Ljava/lang/Object;)V

  原因:SpringCloud和SpringBoot版本不匹配

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM