wel*_*lly 3 java spring static dependency-injection
我知道这个编译,但我的问题是,这是一个好主意吗?我很好奇为什么它可能不是一个好主意.更好的是,如果SomeStaticClass是@Component,还有其他选择,但它也必须是MyComponent的静态成员.我的理解是它的设计很糟糕,让Spring自动装配静态成员.根据我所读到的,我仍然不太明白为什么.说我有以下内容:
@Component
public final class MyComponent {
private static SomeStaticClass someStaticClass;
@Autowired
MyComponent(SomeStaticClass someStaticClass) {
MyComponent.someStaticClass = someStaticClass;
}
}
Run Code Online (Sandbox Code Playgroud)
设计糟糕的原因很少:
static 可变字段通常是一个糟糕的设计
使测试更难 - 一旦设置了这个字段,它将在下一个测试中保持设置,可能会产生隐藏的相互依赖性
如果你想拥有两个实例MyComponent,每个实例都不同,该SomeStaticClass怎么办?混沌.
你不能通过static字段或setter autowiring 注入值,它是明确禁止的.必须有这样的理由.
为什么你甚至需要那个?你有static方法MyComponent吗?为什么?
如果上述情况属实,那么MyComponent.staticMethod()在构造函数初始化该字段之前如何阻止调用呢?Spring的重点是返回完全填充的安全bean
| 归档时间: |
|
| 查看次数: |
1273 次 |
| 最近记录: |