带有Spring引导程序的Grails 3自动配置

时间:2015-12-09 13:22:35

标签: grails spring-boot

我正在尝试将Grails应用程序与Netflix Eureka集成,以便使用Spring Cloud Ribbon对服务进行REST调用。在普通的Spring Boot应用程序中,只需添加所需的依赖项,spring boot autoconfigure将确保我的RestTemplate配置为使用Ribbon。

但是在我们的Grails(3.0.7)应用程序中,Spring Boot自动配置不会启动。有没有人有想法让Grails with Spring Boot自动配置工作?

1 个答案:

答案 0 :(得分:1)

发现问题。毕竟Spring Boot @AutoConfigure正在运作。

使用功能区尝试使用Spring RestTemplate休息时出现问题:

class MyController {

    RestTemplate restTemplate

    def index() {
        def result = restTemplate.getEntity("http://my-service/whatever", Void.class) // call gives nullPointerException due restTemplate is not injected
        render "Response: $result"
    }
}

因为Spring Boot在Bean名RestTemplate下注册了启用了Ribbon的restTemplate bean,所以基于Grails约定的注入机制(字段名必须与bean名称匹配)不起作用。要解决此问题,需要@AutowiredrestTemplate字段,让Spring进行注入。

所以这就是解决方案:

class MyController {

    @AutoWired
    RestTemplate restTemplate

    def index() {
        def result = restTemplate.getEntity("http://my-service/whatever", Void.class) // restTemplate is now injected using Spring instead of Grails
        render "Response: $result"
    }
}