美文网首页
客户端应用接入Apollo

客户端应用接入Apollo

作者: 烂融小菜花 | 来源:发表于2019-10-08 10:03 被阅读0次

    本文将介绍如何让现有的Spring Boot项目接入Apollo,还未搭建Apollo服务端的请移步到我前面的文章进行阅读。

    下面以Cas单点登录项目为例,进行简单的接入操作,更多详细的方法请参考:

    [github官方文档] https://github.com/ctripcorp/apollo/wiki/Java客户端使用指南

    一、创建配置信息

    接入之前,需要先在Apollo服务器创建需要的配置项。

    默认访问:localhost:8070创建项目

    1569205216718.png

    添加并发布配置项

    1569205135946.png

    二、客户端接入

    1.添加依赖

    <!-- apollo客户端 -->
    <dependency>
        <groupId>com.ctrip.framework.apollo</groupId>
        <artifactId>apollo-client</artifactId>
        <version>1.4.0</version>
    </dependency>
    

    2.启动aopollo配置中心

    方式一:

    修改application.propertiesbootstrap.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.idapollo.meta的配置移到该配置文件.

    下图中,我采用了占位符形式是为了便于实施人员在Maven编译部署时可以以设置变量的方式进行赋值,避免更改配置文件(这里可以不用Maven设置变量的方式,直接写configserver的地址也可以。)。而开发人员在本地进行开发时,可以在通过server.properties配置文件来进行配置apollo.meta,因为通过server.properties配置的方式优先级比在app.properties配置的方式高。

    1569750860731.png

    使用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.png

    apollo配置起效。

    相关文章

      网友评论

          本文标题:客户端应用接入Apollo

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