一 .踩坑原因:
通常spring项目启动默认读取的是 classpath:/、 classpath:/config/、file:./、file:./config/ 这4个位置.我想把它放在自定义的目录下,如图
结果启动后找不到配置文件,默认走8080端口,报错。
二.求助神奇网友
解法1 :在启动文件里这样写
@SpringBootApplication
@EnableEurekaServer
public class DemoEurekaServer {
private static Logger log = LoggerFactory.getLogger(DemoEurekaServer.class);
public static void main(String[] args) {
log.info("Eureka 开始启动...");
// springboot 默认的配置文件路径
// String addClassPath = "spring.config.location:classpath:/";
// 自定义的配置文件路径
String addClassPath = "spring.config.additional-location:classpath:/";
addClassPath += ",classpath:/env/";
new SpringApplicationBuilder(DemoEurekaServer.class).properties("spring.config.name:application", addClassPath).build().run(args);
// SpringApplication.run(DemoEurekaServerApplication.class, args);
log.info("Eureka 启动完成...");
}
}
结果报这个错误:
17:37:45.772 [main] INFO com.dx.demoeurekaserver.DemoEurekaServer - Eureka 开始启动...
17:37:48.131 [main] DEBUG org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter - Application failed to start due to an exception
org.springframework.boot.context.config.ConfigDataLocationNotFoundException: Config data location 'classpath:/env/' cannot be found
at org.springframework.boot.context.config.ConfigDataEnvironment.checkMandatoryLocations(ConfigDataEnvironment.java:383)
at org.springframework.boot.context.config.ConfigDataEnvironment.applyToEnvironment(ConfigDataEnvironment.java:326)
搜了半天也没解决为啥找不到路径的问题。
换个思路回去解决最初的问题。
解法2:在pom的<build>里加上这个
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources/env</directory>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
然后能正常启动了(注:里面的星号不是注解)
具体原理请自行在网上查找。
PS: 希望对看到本文的人有所帮助,如果你有更好的建议或思路欢迎留言。