gpt4 book ai didi

spring - Spring Boot中的资源注入(inject)不适用于gradle

转载 作者:行者123 更新时间:2023-12-03 04:42:18 26 4
gpt4 key购买 nike

我有一个配置 bean。

@Component
public class Config {

@Value("classpath:${app.file.name.srgbicc}")
public Resource icc;

@PostConstruct
void init(){
try {
tempdir = Files.createTempDir();
newIcc = copyIccFileToTemp();
}catch (IOException e){
throw new RuntimeException(e);
}
}

private File copyIccFileToTemp() throws IOException {
File tempIcc = new File(tempdir, icc.getFilename());
FileUtils.copyFile(icc.getFile(),tempIcc);
return tempIcc;
}

}

icc.getFile()有一个 FileNotFoundException

应用程序属性
app.file.name.srgbicc = sRGB.icc

我查看了我的类路径,发现以下情况:
build/classes/main (no icc file)
build/resources/main (icc file, application.properties)

在应用程序启动期间打印出我的类路径时,我只发现 ...myApp/build/classes/main .
没有 ../build/resources/main../src/main/resources那里的条目。

所以我想知道为什么资源不在类路径上?
根据 http://docs.spring.io/spring-boot/docs/1.1.5.RELEASE/reference/htmlsingle/#build-tool-plugins-gradle-running-applications
这应该是。

当然如果我把icc文件放在 build/classes/main它一切都按预期工作,但它不应该在那里。对?

我尝试使用 gradle run 运行应用程序或 gradle bootRun在 intellij 中我使用 static main .好消息是应用程序始终失败,与我如何启动它无关。

我的项目布局
myApp
src
main
java
pkg
Config.java
resources
sRGB.icc
application.properties

供引用:
智能 13
Spring 启动 1.1.5
Fgradle 2.0

更新
这是我的代码的精简示例
https://gist.github.com/Vad1mo/bb5d23ca251341236fbd

我在 config.init 中删除了 @PostConstruct 并使用 gradle build 运行应用程序,当我从 intellij 运行测试失败时,所有测试都成功。这很奇怪,我知道有不同的行为

最佳答案

我现在解决了这个问题。

对我有帮助的只是做一个简单的clean build并在 intellij 中重建项目。我使用了很多 eclipse 和 maven,所以我希望它会自动发生。

关于spring - Spring Boot中的资源注入(inject)不适用于gradle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25596783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com