我有一个非常基本的spring boot命令行应用程序,试图从项目内部存在的application.yml文件加载属性。该项目是使用gradle构建的,而我正在使用groovy作为语言。
现在,无论我将application.yml文件放在哪里,我似乎都无法将其值分配给配置属性Bean。文件如下
application.yml
my:
name: "some name"
servers:
- dev.bar.com
- foo.bar.com
Config.groovy
import org.springframework.boot.context.properties.ConfigurationProperties
import org.springframework.context.annotation.Configuration
@Configuration
@ConfigurationProperties(prefix = "my")
public class Config {
private List<String> servers = new ArrayList<String>();
private String name
public List<String> getServers() {
return this.servers;
}
public String getName() {
return this.name
}
}
Worker.groovy 命令行运行器
@Component
class Worker implements CommandLineRunner {
@Autowired
Config config
@Override
public void run(String... args) throws Exception {
println "Running a test app"
println config.name
println config.getServers()
}
}
目录结构
app-name
-build.gradle
-src
-main
-groovy
-config
-application.yml
-com
-company
-app
Worker.groovy
Config.groovy
Application.groovy
我还尝试将application.yml重命名为application.properties并将其添加到com.company.app项目下,但是worker类的run方法始终将属性打印为null。我相信我可能已经错过了一些非常基本的东西,但是似乎找不到它所拥有的东西。
让我知道是否需要提供其他详细信息。
最佳答案
application.yml
应该放在src/main/resources/config
下。
从src/main/resources
目录中处理(复制)资源。
默认情况下,groovy插件会忽略src/main/groovy
中的groovy类。
关于spring - 无法在Spring Boot中加载外部属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33007260/