春季:作用域

时间:2018-07-10 13:53:48

标签: java spring

我在Spring JIRA上写了这个想法,尽管我知道这不是关键功能,并且优先级较低,但我现在仍然希望得到一些答案。我宣传这个想法,是因为我想知道你们对它的想法,如果它很酷,我应该自己实现,还是需要这样做表明体系结构不好。

所以这个想法本身-就像标题所暗示的-是Spring Bean中的一个字段,其范围与bean本身不同。我们已经有了范围代理的形式,但是它仅适用于bean依赖项。我可能想将会话范围的字符串列表存储在单例范围的Bean中。然后,我必须创建一个新bean,它具有一个字段的会话范围和一些使用该字段的功能。似乎很浪费代码,我会发现它很糟糕,因为我将无法在其他任何地方使用该bean,因为它已经将数据放入了第一个类中。

我可以改写上面的混乱,说我想用任意类型命名bean(因此不一定是spring bean),并且在我们配置它具有的作用域的顶部,该字段对于每个实例都将是不同的父类。

这可以使字段实例的范围比原型作用域的bean宽,但也比我们想要在其中使用的实际范围要宽得多。有点中间立场。

这是我写的JIRA问题:https://jira.spring.io/browse/SPR-16971

1 个答案:

答案 0 :(得分:0)

据我所知,Scopes仅与依赖注入一起使用,因为DI容器决定应返回新实例还是应返回现有实例。因此,@ Autowired的所有内容都可以确定范围。 我无法想象对普通字段进行范围界定会如何工作。如果我更改了它,是否应该在所有其他“使用”它的对象中更改它?然后,我必须是某种代理对象,并且必须具有原始值。另一方面,如果您有一个代理对象,为什么不使用当前可用的自动装配机制。