客户端应用接入Apollo
本文将介绍如何让现有的Spring Boot项目接入Apollo,还未搭建Apollo服务端的请移步到我前面的文章进行阅读。
下面以Cas单点登录项目为例,进行简单的接入操作,更多详细的方法请参考:
[github官方文档] https://github.com/ctripcorp/apollo/wiki/Java客户端使用指南
一、创建配置信息
接入之前,需要先在Apollo服务器创建需要的配置项。
默认访问:localhost:8070
创建项目
添加并发布配置项
1569205135946.png二、客户端接入
1.添加依赖
<!-- apollo客户端 -->
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>1.4.0</version>
</dependency>
2.启动aopollo配置中心
方式一:
修改application.properties
或bootstrap.properties
配置
apollo.bootstrap.enabled=true
方式二:
在启动类添加@EnableApolloConfig
注解。
@EnableTransactionManagement
@SpringBootApplication(exclude = {SecurityAutoConfiguration.class})
@EnableEurekaClient
@EnableApolloConfig
public class MainWebApplication extends SpringBootServletInitializer {
@Profile("war")
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(MainWebApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(MainWebApplication.class, args);
}
}
目前在我们公司的项目中,cas使用第一种方式,其他项目使用第二种方式。因为cas单点登录的启动类不是我们自定义的,直接在配置文件中配置比较方便。
其他方式这里不进行介绍了,想具体了解的可以到官网。
2.配置AppId和meta-server
方式一:
在application.properties
或者bootstrap.properties
中按照如下样例进行配置
#这两个属性配置不支持多个war包在同一个tomcat中启动,需要在classpath:META-INF/app.properties文件中配置
app.id=apollo-cas
#apollo.meta只是一个逻辑角色,在部署时和Config Service是在一个JVM进程中的,所以IP、端口和Config Service一致
apollo.meta=http://localhost:8080
这种配置方式不适用于多个war包部署在同一个tomcat的使用场景,考虑到我们公司虽然是做往微服务方向发展,但是可能也会以war包的形式部署到同一个tomcat,所以我没采用这种方式,而是采用了第二种方式。
方式二:
在resources/META-INF/
目录下创建app.properties
文件,把app.id和apollo.meta的配置移到该配置文件.
下图中,我采用了占位符形式是为了便于实施人员在Maven编译部署时可以以设置变量的方式进行赋值,避免更改配置文件(这里可以不用Maven设置变量的方式,直接写configserver的地址也可以。)。而开发人员在本地进行开发时,可以在通过server.properties
配置文件来进行配置apollo.meta,因为通过server.properties
配置的方式优先级比在app.properties
配置的方式高。
使用Maven设置变量的方式需要在pom.xml文件添加resources标签
<resources>
<resource>
<directory>src/main/resources/META-INF/</directory>
<targetPath>/META-INF</targetPath>
<includes>
<include>app.properties</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
通过server.properties配置文件
-
可以在
server.properties
配置文件中指定apollo.meta=http://config-service-url
-
对于Mac/Linux,文件位置为
/opt/settings/server.properties
-
对于Windows,文件位置为
C:\opt\settings\server.properties
env=DEV
apollo.meta=http://192.168.10.126:8080
3.测试
@RestController
@RequestMapping("test")
public class TestController {
@Value("${testname:}")
private String testName;
@GetMapping("hello")
public String hello() {
return "hello: " + testName;
}
}
启动Cas成功,登录后,访问上面的测试接口:
1569206868284.pngapollo配置起效。