我一直在尝试创建一个使用Groovy bean构建器的简单springboot程序,但我遗漏了一些东西:
@EnableAutoConfiguration
class MyApplication {
public static void main(String[] args) {
logger.info "Starting MyApplication..."
Object[] sources = [MyApplication.class, new ClassPathResource("bb.groovy")]
SpringApplication.run(sources, args)
}
}
//MyController.groovy
@RestController
class MyController {
ConfigObject configObject
MyService myService
@RequestMapping("/home")
String home() {
return myService.getSomeData()
}
}
//src/main/resources/bb.groovy
beans = {
myService(MyService) {
url = "http://www.spring.io"
}
configObject(ConfigObject) {
new ConfigSlurper().parse("Config.groovy")
}
myController(MyController) {
configObject = ref('configObject')
myService = ref('myService')
}
}
SpringBoot启动很好,但我在/ home获得了404。我也没有在启动时看到任何尝试(sys out)从bb.groovy加载bean
我知道这可以从Where to put Groovy bean definitions in a Spring Boot webapp?的答案中获得,但我必须遗漏一些东西......
答案 0 :(得分:3)
回答我自己的问题。这不是spring boot的问题,而是使用bean的dsl语法。
必须是bean {}。不是beans = {}
删除等号可以加载配置。我使用的是grails方式的resources.groovy,其语法是beans = {}
另外,为了注入Config.groovy,我不得不使用
新的ConfigSlurper()。解析(Config)而不是 新的ConfigSlurper()。解析(" Config.groovy")
其中Config.groovy是与bb.groovy在同一目录中的文件。
(参考:http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#cli-groovy-beans-dsl)