【问题标题】:Spring boot does not load beans from groovy bean builderSpring Boot 不会从 groovy bean builder 加载 bean
【发布时间】:2014-06-09 04:35:26
【问题描述】:

我一直在尝试创建一个使用 Groovy bean builder 的简单 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? 的回答中我知道这是可能的,但我一定遗漏了一些东西......

【问题讨论】:

    标签: spring-boot


    【解决方案1】:

    回答我自己的问题。这不是 spring boot 的问题,而是 bean dsl 语法的问题。

    它必须是 bean { }。不是豆子 = { }

    删除等号加载配置正常。我用的是Grails的resources.groovy方式,语法是beans = {}

    另外,为了注入 Config.groovy,我不得不使用

    新的 ConfigSlurper().parse(Config) 而不是 新的 ConfigSlurper().parse("Config.groovy")

    其中 Config.groovy 是与 bb.groovy 位于同一目录中的文件。

    (参考:http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#cli-groovy-beans-dsl

    【讨论】:

      猜你喜欢
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 2020-08-15
      • 1970-01-01
      • 2017-08-21
      • 2022-11-10
      • 2015-03-04
      • 1970-01-01
      相关资源
      最近更新 更多