相关疑难解决方法(0)

Spring Proxy Class和Kotlin中的空指针异常

我和kotlin一起面临春天的问题.

我有一个控制器bean(没有接口btw),它通过主构造函数有一个自动连接的服务bean.

除非我为控制器使用缓存注释,否则它工作正常.显然,spring缓存会在引擎盖下生成一个代理类来处理缓存.

我的代码看起来像这样:

@RestController
@RequestMapping("/regions/")
open class RegionController @Autowired constructor(val service: RegionService) {
    @RequestMapping("{id}", method = arrayOf(RequestMethod.GET))
    @Cacheable(cacheNames = arrayOf("regions"))
    fun get(@PathVariable id: Long): RegionResource {
        return this.service.get(id)
    }
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是当执行该方法的零指示字例外,实际上this.servicenull这在技术上是不可能的,因为它是在一个科特林非空变量.

我假设spring生成的类代理用null值而不是autowired bean初始化类.这必须是使用kotlin和spring的常见陷阱.你是怎么绕过这个问题的?

spring spring-mvc kotlin

7
推荐指数
1
解决办法
1187
查看次数

标签 统计

kotlin ×1

spring ×1

spring-mvc ×1