Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring boot项目中定义的全局变量和应用程序变量_Java_Spring_Spring Boot_Microservices_Configuration Files - Fatal编程技术网

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

Java Spring boot项目中定义的全局变量和应用程序变量,java,spring,spring-boot,microservices,configuration-files,Java,Spring,Spring Boot,Microservices,Configuration Files,我正在尝试使用spring和spring boot开发微服务。在我的项目中,我将单片转换为面向服务的体系结构。项目包含20个微服务。我需要设置应用程序变量和全局变量。我有一些与此相关的困惑,我在这里添加这些困惑 可以在application.properties文件中声明全局变量吗?如果不可能,我可以在哪里定义全局变量 若我使用SpringConfigServer进行全局配置,那个么如何有条件地将这些属性导入到客户机项目中 我是否可以在config server中为不同的配置文件设置不同的属性文

我正在尝试使用spring和spring boot开发微服务。在我的项目中,我将单片转换为面向服务的体系结构。项目包含20个微服务。我需要设置应用程序变量和全局变量。我有一些与此相关的困惑,我在这里添加这些困惑

  • 可以在application.properties文件中声明全局变量吗?如果不可能,我可以在哪里定义全局变量
  • 若我使用SpringConfigServer进行全局配置,那个么如何有条件地将这些属性导入到客户机项目中
  • 我是否可以在config server中为不同的配置文件设置不同的属性文件,并有条件地将不同的配置文件导入到客户端项目中?在我的例子中,每个配置文件代表不同的区域

  • 在我的探索之后,我找到了这个问题的解决方案,用于加载全局变量和应用程序变量,包括数据库配置。我们可以使用的最好方法是——SpringCloudConfigServer外部化配置

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

  • GIT链接参考中的配置
  • 使用本地文件系统/环境变量
  • 参考链接

  • 这里我使用了本地文件系统。

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

    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>
    
    并通过添加pom.xml依赖项创建客户端微服务项目,

    <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    
    最后,通过指定概要文件来运行客户端项目

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

    提前感谢

    您可以使用基于键值的存储,如etcd for global variables或返回全局变量的通用rest服务。或者您可以使用父工件存储全局变量。需要对架构设置进行良好的研发:-)Yaa。我找到了一个可行的方法,卡卡巴利先生。无论如何,谢谢你的回复,谢谢你花时间陪我。你可以用我的方法核对你的发现。我已经添加了缺点。非常感谢您的研究!
    server.port=8080
    spring.application.name=db
    spring.cloud.config.uri=localhost:8888
    
    java -jar -Dsping.profiles.active=<profile> <jar_name>.jar