我正在尝试将Grails应用程序与Netflix Eureka集成,以便使用Spring Cloud Ribbon对服务进行REST调用。在普通的Spring Boot应用程序中,只需添加所需的依赖项,spring boot autoconfigure将确保我的RestTemplate配置为使用Ribbon。
但是在我们的Grails(3.0.7)应用程序中,Spring Boot自动配置不会启动。有没有人有想法让Grails with Spring Boot自动配置工作?
答案 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名称匹配)不起作用。要解决此问题,需要@Autowired
到restTemplate
字段,让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"
}
}