spring - Bean 仅在作为方法参数注入时才起作用
问题描述
我正在开发一个使用 RestTemplate 与 REST API 通信的客户端应用程序。
RestTemplate 是这样配置的:
@Configuration
class RestTemplateConfiguration {
@Bean
fun restTemplate(restTemplateBuilder: RestTemplateBuilder): RestTemplate {
return restTemplateBuilder.build()
}
}
但我也尝试过这样配置它:
@Configuration
class RestTemplateConfiguration {
@Bean
fun restTemplate(restTemplateBuilder: RestTemplateBuilder): RestTemplate {
val restTemplate = RestTemplate()
val converter = MappingJackson2HttpMessageConverter ()
converter.objectMapper = ObjectMapper()
restTemplate.messageConverters.add(converter)
return restTemplate
}
}
因此,当 bean 作为方法参数注入时,仅出于测试目的,它可以正常工作:
@GetMapping
fun getAll(restTemplate: RestTemplate, model: Model): String {
val response = restTemplate.exchange("http://localhost:8080/api/metagame/archetypes", HttpMethod.GET, null,
object : TypeReferences.PagedModelType<ArchetypeModel>() {})
val archetypes = response.body?.content ?: ArrayList<EntityModel<ArchetypeModel>>()
model.addAttribute("archetypes", archetypes)
return "metagame/archetypes/index"
}
但是,每次它作为构造函数参数注入时,响应都是空的:
class ArchetypeController(val restTemplate: RestTemplate)
是 Kotlin 问题还是配置问题...?由于 Spring 没有给我任何错误消息,我完全迷失了:/
解决方案
推荐阅读
- java - 使用 rx-java2 进行验证:获取第一个错误
- cmake - doxygen INSTALL 无法将文件“.../doxygen/build/bin/doxygen”复制到“/usr/local/bin/doxygen”
- php - 在 Laravel 5.5 中创建 MySQL 函数
- scala - 未来内部的动态变量
- php - php : 获取选择值并运行 sql 查询
- python - Python:通过 for 循环更改列表
- python - 如何删除熊猫中的一种字符
- c# - 从android获取进程PID以杀死
- xml - UPS API - 打印退回的运输标签 GIF 数据
- javascript - 将 gulp.start 函数迁移到 Gulp v4