我有两个应用程序:
客户端必须使用名为 certificate.json 的文件。
我想将此文件存储在服务器端,因此需要它的另一个微程序和我的客户端程序可以从服务器端检索它。
我试着:
将此行添加到application.properties:
certificate.location:classpath:config / certificate.json
通过以下方式从客户端程序调用该值:
@Value(" $ {certificate.location}&#34) private String certificateLocation;
但certificateLocation的值是 classpath:config / certificate.json 。我想要的值是文件位置,如:/home/user/project/scr/main/resources/config/certificate.json。
或者,有没有办法通过URI直接检索我的文件,例如locahost:8889 / ...(8889是我的配置服务器端口)。
编辑1: 我无法使用服务器的绝对路径,因为我不是运行它的人。
提前谢谢。
答案 0 :(得分:2)
我会做
@Value("${certificate.location}") private Resource certificateLocation;
这样,您的位置已经是Resource,您可以加载,致电getURI(),getFile()。getAbsolutePath()等等。因为您的值的前缀是{{1你将拥有一个ClassPathResource实例,你可以将它用于很多事情。
答案 1 :(得分:1)
classpath
只是网址的协议部分。您可以使用file
或任何其他支持的协议。例如,file://home/user/project/scr/main/resources/config/certificate.json
。
答案 2 :(得分:1)
spring.cloud.config.server.native.searchLocations
=file://${user.home}/CentralRepo/
SPRING_PROFILES_ACTIVE=native
I am also get this way using microservice
答案 3 :(得分:1)
OP您需要创建一个Web服务并返回certificate.json作为响应。然后,您可以通过向https://12.12.12.12:8080/getCertificate之类的URI发送GET或POST请求来发送和接收数据。请参阅:
https://spring.io/guides/gs/rest-service/
作为旁注,您不应该将您的内部文件暴露给互联网,因为它非常不安全,并且会让您受到盗版和黑客攻击。
答案 4 :(得分:1)
在这种情况下我会做什么
添加静态文件夹的配置
@SpringBootApplication public class DemoStaticresourceApplication extends WebMvcConfigurerAdapter {
public static void main(String[] args) {
SpringApplication.run(DemoStaticresourceApplication.class, args);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/files/**").addResourceLocations("file:/fileFolder/")
.setCachePeriod(0);
}
}
将certificate.json放在fileFolder中并尝试http://localhost:8080/files/certificate.json,它将直接从文件系统中为您提供。
现在,只有在使用/ files / path
调用时,才会提供您在此文件夹中添加的每个文件