fxn*_*xnn 7 spring subclass specialization cdi
CDI具有专业化的特征,我在Spring世界中寻找它.
细节.
在CDI中,@Specializes注释允许人们通过覆盖它来改变bean的行为.这对于该bean的用户是完全透明的,例如,如果我们有的话
public class OneBean {
public String whoAmI() { return "OneBean"; }
}
@Specializes
public class AnotherBean extends OneBean {
@Override
public String whoAmI() { return "AnotherBean"; }
}
Run Code Online (Sandbox Code Playgroud)
我们可以
public class SomewhereElse {
@Inject
OneBean oneBean; // we know nothing of AnotherBean here!
public void guessWhosThere() {
return oneBean.whoAmI(); // yet it returns "AnotherBean"
}
}
Run Code Online (Sandbox Code Playgroud)
只要OneBean实际使用和不使用,这就非常有用AnotherBean.例如,如果OneBeanin one.jar和AnotherBeanin another.jar,我们可以通过重新配置类路径来改变bean的行为.
题.Spring中是否也存在类似Specialization的东西?
我只能找到@Primary注释,但是它具有不同的语义:@Primary不替换一个bean,而只是标记多个替代中的一个作为主要选项.特别是,据我所知,我无法构建一个深层继承层次结构,因为它可能@Specializes.
| 归档时间: |
|
| 查看次数: |
638 次 |
| 最近记录: |