Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.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云配置服务器是硬编码路径的有效解决方案吗?_Java_Spring_Spring Boot_Spring Cloud Config_Spring Cloud Config Server - Fatal编程技术网

Java Spring云配置服务器是硬编码路径的有效解决方案吗?

Java Spring云配置服务器是硬编码路径的有效解决方案吗?,java,spring,spring-boot,spring-cloud-config,spring-cloud-config-server,Java,Spring,Spring Boot,Spring Cloud Config,Spring Cloud Config Server,晚上好! 我正试图学习如何用Spring Boot实现微服务体系结构,但我在项目中遇到了一些硬编码路径的问题 我的代码中有两个特殊类,我必须手动放置这些路径,它们是: DiscoverClientConfiguration.java:创建这个类是为了通过https连接到发现服务器,为了实现它,我遵循了以下步骤,下面是代码: System.setProperty("javax.net.ssl.keyStore", "C:\\ ..my file system path

晚上好! 我正试图学习如何用Spring Boot实现微服务体系结构,但我在项目中遇到了一些硬编码路径的问题

我的代码中有两个特殊类,我必须手动放置这些路径,它们是:

  • DiscoverClientConfiguration.java:创建这个类是为了通过https连接到发现服务器,为了实现它,我遵循了以下步骤,下面是代码:

    System.setProperty("javax.net.ssl.keyStore", "C:\\ ..my file system path.. \\THIS PROJECT FOLDER\\src\\main\\resources\\keystore\\gateway.jks");
    System.setProperty("javax.net.ssl.keyStorePassword", "**");
    
    System.setProperty("javax.net.ssl.trustStore", "C:\\ ..my file system path.. \\THIS PROJECT FOLDER\\src\\main\\resources\\keystore\\gateway.jks");
    System.setProperty("javax.net.ssl.trustStorePassword", "**");
    
    private HttpComponentsClientHttpRequestFactory validateSSL(){
    
    String location = "C:\\ ..my file system path.. \\ANOTHER PROJECT FOLDER\\src\\main\\resources\\keystore\\be_device.jks";
    String pass = "++"; ... some more code ...
    }
    
  • restemplateconfiguration.java:创建这个类是为了使用https调用外部rest服务,我遵循了这个方法,以便实现它。这里的情况更糟,因为我必须在另一个项目中放置.jks文件的路径,代码如下:

    System.setProperty("javax.net.ssl.keyStore", "C:\\ ..my file system path.. \\THIS PROJECT FOLDER\\src\\main\\resources\\keystore\\gateway.jks");
    System.setProperty("javax.net.ssl.keyStorePassword", "**");
    
    System.setProperty("javax.net.ssl.trustStore", "C:\\ ..my file system path.. \\THIS PROJECT FOLDER\\src\\main\\resources\\keystore\\gateway.jks");
    System.setProperty("javax.net.ssl.trustStorePassword", "**");
    
    private HttpComponentsClientHttpRequestFactory validateSSL(){
    
    String location = "C:\\ ..my file system path.. \\ANOTHER PROJECT FOLDER\\src\\main\\resources\\keystore\\be_device.jks";
    String pass = "++"; ... some more code ...
    }
    
  • 正如你所想象的,每次有人提取代码时,他/她都必须改变那些不理想的路径

    在第一种情况下,我尝试创建一个
    .properties
    文件来使用
    类路径:
    表示法,但它不起作用,并且在运行时出现了一些异常

    在第二种情况下,我尝试使用这种符号

    。\\..\\Centro\\Centro Device\\src\\main\\resources\\keystore\\be\u Device.jks

    为了不显式写入我的文件系统路径,但在我的pc中(Windows 10 professional)在运行时不起作用。另一方面,在另一位同事使用LinuxMint的机器上,他说这个符号
    。/../Centro/Centro-Device/src/main/resources/keystore/be_-Device.jks
    工作正常(我已经在我的机器上测试过,在运行时不起作用)

    您认为使用SpringCloud创建配置服务器是解决这个问题的一个有价值的解决方案吗? 我正在考虑将我们所有的文件系统路径都放在配置服务器中,并根据使用的机器获取它们。你觉得这个主意怎么样

    编辑

    对不起,如果我没有很好地解释我自己。我的问题并不是基于在某些.properties中移动路径的事实,我希望有一个可以在多个路径选项之间自动选择的环境,因为我已经尝试过使用@Value等注释的解决方案。 几乎类似于DiscoveryServer,但用于文件路径。 问题是,在这种特定情况下,软件无法正确运行,因为它需要指向指定文件的整个文件系统路径。

    选项1: 将这些属性放在
    应用程序.properties
    文件中,spring引导框架将在为您引导时更新环境。 您可以使用
    @Value
    注释初始化spring组件类中的字段

    大概是这样的:

    @Component
    public class YourClass {
    
    @Value("${your.property.key})"
    private String path;
    
    }
    
    选项2: 在项目中创建其他\external
    config.properties
    文件,并将这些属性放在其中。 使用
    @PropertySource
    注释属性使用者类,并为其提供config.properties文件的路径

    使用如上所述的值注释或从系统中检索这些属性。

    选项1: 将这些属性放在
    应用程序.properties
    文件中,spring引导框架将在为您引导时更新环境。 您可以使用
    @Value
    注释初始化spring组件类中的字段

    大概是这样的:

    @Component
    public class YourClass {
    
    @Value("${your.property.key})"
    private String path;
    
    }
    
    选项2: 在项目中创建其他\external
    config.properties
    文件,并将这些属性放在其中。 使用
    @PropertySource
    注释属性使用者类,并为其提供config.properties文件的路径


    使用如上所述的值注释或从系统中检索这些属性。

    我已经尝试了这两个选项,如果我没有很好地解释我自己,很抱歉。我的问题不是基于在某些属性中移动路径的事实。我希望有一个可以在多个路径选项中自动选择的环境。我已经尝试了这两个选项,如果我没有很好地解释我自己,很抱歉。我的问题不是基于在某些属性中移动路径的事实。我希望有一个可以在多个路径选项中自动选择的环境