【发布时间】:2020-08-03 18:49:11
【问题描述】:
我是 Spring Boot 的新手,我只喜欢使用它的依赖注入,而不是所有自以为是的框架,而是一些。我知道此功能还有其他替代方案,但我想了解更多 Spring。
我正在尝试创建一个请求范围的 bean 并使用常规依赖注入填充它。我的计划是让一些我可以填充的 User 对象包含一些易于访问的自定义业务详细信息,从而使代码干净。
@Component
@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)
class MyBean {
@Autowired
lateinit var req: HttpServletRequest
@Autowired
lateinit var env: Environment
@PostConstruct
fun pc() {
println("I am constructed $this, $req, $env")
}
var a = 3
}
@RestController
class MyController {
@GetMapping("/api/xyz")
fun login(m: MyBean): Int {
println("new bean m")
return m.a
}
}
每次我到达那个端点时,我都会看到新的对象被实例化。但是内部依赖项不是自动装配的,它们始终为空。我究竟做错了什么?我需要写一个过滤器吗?但是我怎么知道如何找到需要初始化该 bean 的所有端点呢?如果,我删除了变量被初始化的请求范围。
【问题讨论】:
-
我很想知道哪些框架没有自以为是。
-
谁说别人不自以为是?
-
你说你不喜欢 Spring 的所有固执己见的框架。我的观点是,所有框架在某种程度上都是固执己见的。因此,我的评论。
-
感谢您的意见和讨论。
标签: java spring-boot kotlin