2015-10-08 35 views
0

我有一个非常基本的弹簧引导命令行应用程序,我试图从我的项目中存在的application.yml文件加载属性。该项目使用gradle构建,我使用groovy作为语言。无法加载Spring引导中的外部属性

现在,无论我放置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项目下增加了,但工人类的run方法始终打印属性为空。我相信我可能错过了一些非常基本的东西,但似乎无法找到它有什么。

让我知道我是否需要提供任何额外的细节。

+0

工作正常!我希望这些文件更清晰。你为什么不把它作为答案而不是评论发布,我会接受它作为一个有效的答案?谢谢!! – bythe4mile

回答

1

application.yml应去src/main/resources/config

src/main/resources目录处理(复制)资源。

默认情况下,groovy插件会忽略除src/main/groovy以外的常规类。

相关问题