【发布时间】:2019-04-04 20:04:01
【问题描述】:
我在研究春豆,偶然发现@Lookup,上面写着:
如果我们碰巧决定有一个原型 Spring bean,那么我们就是 几乎立即面临我们的单身人士将如何解决的问题 Spring bean 访问这些原型 Spring bean?
嗯,我不明白,因为当我研究 scope=prototype 时,它说:
4.4.2 原型范围 bean 部署的非单例原型范围导致每次创建一个新的 bean 实例 请求该特定 bean
所以我似乎误解了这些词:
对该特定 bean 发出请求
实际上在 Spring 框架中编程的每一行代码都在某个 bean 中(即@controller、@Service 等),不是吗? 而且几乎所有这些都是单例,不是吗? 因此,如果我需要原型,我只需创建 scope=prototype 并且几乎每次都将其注入另一个 bean(即@controller、@Service 等),不是吗?
所以请给出一个真实世界的场景,1)什么时候应该使用@Lookup,2)什么时候不需要 好的 1) 场景:
@Component
@Scope("prototype")
public class SchoolNotification {
// ... prototype-scoped state
}
@Component
public class StudentServices {
// ... member variables, etc.
@Lookup
public SchoolNotification getNotification() {
return null;
}
// ... getters and setters
}
请给我看一下 2) 案例的场景,并解释一下区别 谢谢你
【问题讨论】:
-
为了进一步的启迪,您可以用于进一步研究的术语是“方法注入”。在添加
@Lookup注释之前,实际注入单例 bean 的方式涉及一些非常混乱的语法,涉及使单例类抽象。