带有 Spring Boot 自动配置的 Grails 3

标签 grails spring-boot

我正在尝试将 Grails 应用程序与 Netflix Eureka 的东西集成,以便使用 Spring Cloud Ribbon 对服务进行 REST 调用。在普通的 Spring Boot 应用程序中,它只不过是添加所需的依赖项,而 Spring Boot 自动配置将确保我的 RestTemplate 配置为供 Ribbon 使用。

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

最佳答案

发现了问题。 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 注册了启用的 Ribbon RestTemplate bean 不在 bean 名称下 restTemplate ,基于 Grails 约定的注入(inject)机制(字段名称必须与 bean 名称匹配)不起作用。要解决此问题,需要 @AutowiredrestTemplate字段并让 Spring 进行注入(inject)。

所以这是解决方案:
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"
    }
}

关于带有 Spring Boot 自动配置的 Grails 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34179910/

相关文章:

grails - 如何将日期放入 Grails 中的参数中

java - Spring Boot 中的 SQL 注入(inject)预防

spring-boot - 如何知道spring boot使用的是哪个消息转换器?

grails - 如何发送重定向作为发布请求。 Spring 安全

grails 3.1.3 具有弱引用 setter 的多个数据源不起作用

angular - 使用 Spring Boot 部署 Angular 应用程序(在 AWS 上)

javascript - 由于 URL 文本,spring boot thymeleaf 找不到资源

java - 基于 Spring Boot 的测试中的上下文层次结构

javascript - 如何获取以声明方式实例化的 dojo 实例?

grails - Grails中验证和刷新的顺序是否保存方法问题?