Java Spring云配置服务器是硬编码路径的有效解决方案吗?
晚上好! 我正试图学习如何用Spring Boot实现微服务体系结构,但我在项目中遇到了一些硬编码路径的问题 我的代码中有两个特殊类,我必须手动放置这些路径,它们是: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
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 ...
}
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:
在项目中创建其他\externalconfig.properties
文件,并将这些属性放在其中。
使用@PropertySource
注释属性使用者类,并为其提供config.properties文件的路径
使用如上所述的值注释或从系统中检索这些属性。选项1:
将这些属性放在应用程序.properties
文件中,spring引导框架将在为您引导时更新环境。
您可以使用@Value
注释初始化spring组件类中的字段
大概是这样的:
@Component
public class YourClass {
@Value("${your.property.key})"
private String path;
}
选项2:
在项目中创建其他\externalconfig.properties
文件,并将这些属性放在其中。
使用@PropertySource
注释属性使用者类,并为其提供config.properties文件的路径
使用如上所述的值注释或从系统中检索这些属性。我已经尝试了这两个选项,如果我没有很好地解释我自己,很抱歉。我的问题不是基于在某些属性中移动路径的事实。我希望有一个可以在多个路径选项中自动选择的环境。我已经尝试了这两个选项,如果我没有很好地解释我自己,很抱歉。我的问题不是基于在某些属性中移动路径的事实。我希望有一个可以在多个路径选项中自动选择的环境