一尘不染

Spring Boot项目中的全局变量和应用程序变量定义

spring-boot

我正在尝试通过使用Spring和Spring
Boot开发微服务。在我的项目中,我正在将整体式架构转换为面向服务的架构。项目包含20个Micro服务。我需要设置应用程序变量和全局变量。我对此有一些困惑,我在这里添加了这些困惑,

  1. 可以在application.properties文件中声明我的全局变量吗?如果无法在哪里定义全局变量?
  2. 如果我使用spring config服务器进行全局配置,如何将这些属性有条件地导入客户端项目?
  3. 是否可以在配置服务器中为不同的配置文件设置不同的属性文件,并有条件地将不同的配置文件导入客户端项目?在这里,每个配置文件代表我的情况下的不同区域。

阅读 13235

收藏
2020-05-30

共1个答案

一尘不染

经过我的探索,我找到了用于加载全局变量和应用程序变量(包括数据库配置)的此问题的解决方案。我们可以使用的最佳方法是-Spring Cloud
Config服务器外部化配置。

我们可以为spring cloud config server创建一个微服务。在配置服务器中,我们可以通过两种方式创建变量和配置。

  1. 来自GIT Link参考的配置
  2. 使用本地文件系统/环境变量。

链接参考

  1. https://cloud.spring.io/spring-cloud-config/single/spring-cloud-config.html
  2. https://cloud.spring.io/spring-cloud-static/spring-cloud-config/1.3.3.RELEASE/multi/multi__spring_cloud_config_server.html
  3. https://github.com/spring-cloud/spring-cloud-config

在这里,我跟随使用本地文件系统。

需要在src / main / resources下创建Config文件夹。并遵循命名约定创建不同的配置文件,

db,properties,db-test.properties,db-prod.properties,db-
dev.properties。我为不同的开发环境创建了示例。就像我们可以为变量和配置创建任何配置文件一样。

并在application.properties中为配置服务器添加以下内容

server.port=8888
spring.profiles.active=native

在配置服务器的pom.xml文件中添加配置服务器依赖项,

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>

将以下内容添加到主应用程序运行类中,

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {

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

并通过添加pom.xml依赖关系来创建客户端微服务项目,

<dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

在application.properties文件中添加以下行,以将客户端设置为从服务器接收配置,

server.port=8080
spring.application.name=db
spring.cloud.config.uri=localhost:8888

最后,通过指定profile运行客户项目,

java -jar -Dsping.profiles.active=<profile> <jar_name>.jar

提前致谢

2020-05-30