晚上好!我正在尝试学习如何使用 Spring Boot 实现微服务架构,但我在项目中遇到了一些硬编码路径的问题。
我的代码中有 2 个特定的类,我必须手动放置这些路径,它们是:
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", "**");
RestTemplateConfiguration.java :这个类是为了使用 https 调用外部休息服务而创建的,为了实现它,我已经按照本教程进行操作。这里的情况更糟,因为我必须将 .jks 文件的路径放在另一个项目中,这里是代码:
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
文件来使用该classpath:
符号,但它不起作用,并且在运行时出现了一些异常。
在第二种情况下,我尝试使用这种符号
..\\..\\Centro\\Centro-Device\\src\\main\\resources\\keystore\\be_device.jks
为了不明确写入我的文件系统路径,但在我的电脑(Windows 10 专业版)中无法在运行时工作。另一方面,在使用 Linux Mint 的另一位同事的机器上,他说这个符号../../Centro/Centro-Device/src/main/resources/keystore/be_device.jks
可以正常工作(我已经在我的机器上测试过,但在运行时不起作用)。
您认为使用 Spring Cloud 创建配置服务器可能是解决此问题的有价值的解决方案吗?我正在考虑将我们所有的文件系统路径放在配置服务器中,并根据使用的机器获取它们。你觉得这个想法怎么样?
编辑
对不起,如果我没有很好地解释我自己。我的问题不是基于在某些.properties 中的路径移动的事实,我希望有一个环境,我可以自动在多个路径选项之间进行选择,因为我已经尝试了带有@Value 等注释的解决方案。几乎像 DiscoveryServer,但用于文件路径。问题在于,在这种特定情况下,软件将无法正确运行,因为它需要指定文件的整个文件系统路径。