1、链接:https://github.com/nobodyiam/apollo-build-scripts

2、下载后目录如下:

安装服务端要求:Java 1.8+、MySQL:5.6.5+、服务器内存2G以上。
1)进入sql文件夹,将sql导入到数据库中
2)修改demo.sh文件。为了避免异常,请将127.0.0.1更换成真实ip地址。

3、修改完启动脚本(windows上需要安装Git)。 bash demo.sh start
安装成功后如下图所示。8080为注册中心服务,8070为后台管理系统服务。

4、打开http://localhost:8070,后台管理

输入用户名apollo,密码admin后登录。登陆后可创建项目。

创建项目时,应用id和客户端的app.properties文件的app.id对应。

添加一个配置key/value后,点击发布。

5、搭建springboot客户端,创建maven工程,在pom文件中加入如下配置:
|
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath /> <!-- lookup parent from repository --> </parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.RC1</spring-cloud.version> </properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- apollo 携程apollo配置中心框架 --> <dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-core</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> </dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies> </dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>copy-conf</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<encoding>UTF-8</encoding>
<outputDirectory>${project.build.directory}/ext/conf</outputDirectory>
<resources>
<resource>
<directory>ext/conf</directory>
<includes>
<include>logback.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.5.201505241946</version>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>default-prepare-agent-integration</id>
<goals>
<goal>prepare-agent-integration</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.3</version>
<configuration>
<imageName>hy_uav_gateway</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
<include>ext/conf/logback.xml</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins> </build>
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository> </repositories>
|
6、在工程resources目录下创建application.yml文件
|
#服务端口 server:
port: 8001 #注册中心服务名 spring:
application:
name: springboot-abl
#apollo用于注册发现 apollo:
meta: http://127.0.0.1:8080
#eureka服务注册 eureka:
client:
service-url:
defaultZone: http://127.0.0.1:8080/eureka
|
7、在工程resources目录下创建apollo-env.properties文件
|
local.meta=http://127.0.0.1:8080 dev.meta=http://127.0.0.1:8080 fat.meta=${fat_meta} uat.meta=${uat_meta} lpt.meta=${lpt_meta} pro.meta=${pro_meta}
|
8、在工程resources目录下创建META-INF/app.properties文件
app.id和后台的应用id对应。
9、添加server.propertie文件。在Mac/Linux下,添加/opt/settings/server.properties,或在windows下,添加C:\opt\settings\server.properties。Server.properties文件内容如下:
10、项目中,添加controller类和App启动类后,项目结构如下:

App启动类内容如下:
|
@EnableApolloConfig @SpringBootApplication public class App {
public static void main(String[] args) { SpringApplication.run(App.class,args); } }
|
IndexController类内容如下。
|
@RestController public class IndexController {
@Value("${name:test}")
private String name;
@RequestMapping("/getName")
public String getName(){
return this.name; } }
|
11、先启动服务端,再启动客户端。Apollo 将扫描类中的所有带@Value的字段,找到对应的字段注入相应的值。

12、引用
github
蚂蚁课堂