美文网首页
Spring Boot第三方库 之 Apollo

Spring Boot第三方库 之 Apollo

作者: 诺之林 | 来源:发表于2020-01-18 15:20 被阅读0次

本文的示例代码参考ApolloDemo

Download

java -version
# openjdk version "1.8.0_212"
unzip apollo-quick-start-1.5.0.zip -d apollo && cd apollo

MySQL

docker run --name apollo-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.17

docker exec -i apollo-mysql mysql -uroot -p123456 < ./sql/apolloportaldb.sql

docker exec -i apollo-mysql mysql -uroot -p123456  <<< "select Id, AppId, Name from ApolloPortalDB.App;"
# Id  AppId      Name
# 1   SampleApp  Sample App

docker exec -i apollo-mysql mysql -uroot -p123456 < ./sql/apolloconfigdb.sql

docker exec -i apollo-mysql mysql -uroot -p123456  <<< "select NamespaceId, Value, Comment from ApolloConfigDB.Item;"
# NamespaceId  Value  Comment
# 1            100    sample timeout??

Apollo

vim demo.sh
# apollo_config_db_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8
# apollo_config_db_username=root
# apollo_config_db_password=123456
# apollo_portal_db_url=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8
# apollo_portal_db_username=root
# apollo_portal_db_password=123456

./demo.sh start
# Config service started. You may visit http://localhost:8080 for service status now!
# Portal started. You can visit http://localhost:8070 now!

jps
# 14769 apollo-service.jar
# 14876 apollo-portal.jar

SpringBoot

spring --version
# Spring CLI v2.0.6.RELEASE

spring init -b 2.0.6.RELEASE -dweb --build gradle ApolloDemo && cd ApolloDemo
vim build.gradle
dependencies {
    compile group: 'com.ctrip.framework.apollo', name: 'apollo-client', version: '1.4.0'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
vim application.properties
# server.port=7777
# app.id=SampleApp
# apollo.meta=http://127.0.0.1:8080
# apollo.cacheDir=./config
vim src/main/java/com/example/ApolloDemo/DemoApplication.java
package com.example.ApolloDemo;

import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.ConfigService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @GetMapping("/timeout")
    public String timeout() {
        Config config = ConfigService.getAppConfig();
        return config.getProperty("timeout", "-1");
    }

}
./gradlew bootrun

curl localhost:7777/timeout
# 100

Issues

  • 本地开发模式
Apollo只会从本地文件读取配置信息 不会从Apollo服务器读取配
  • 托管Logback配置
Apollo的加载顺序放到日志系统加载之前
# apollo.bootstrap.eagerLoad.enabled = true

Reference

相关文章

网友评论

      本文标题:Spring Boot第三方库 之 Apollo

      本文链接:https://www.haomeiwen.com/subject/vrhkzctx.html