我有类A
,B
及其实现AImpl
,BImpl
。
interface A {
}
interface B {
}
interface C {
}
class AImpl{
@Inject
AImpl(B b){}
}
class BImpl{
@Inject
BImpl(String foo, C c){}
}
class CImpl{
}
要在Guice中配置依赖项,我会像这样写smt
bind(A.class).to(AImpl);
bind(C.class).to(CImpl);
@Provides B provideB(C c){
return new BImpl("foo", c)
}
在春天我可以像
@Bean public A a() {
return new AImpl(b())
}
@Bean public B b() {
return new BImpl("foo", c());
}
@Bean public C c() {
return new CImpl();
}
有几个缺点
我应该写AImpl在2个地方(构造函数和配置)需要B。
我应该编写更多代码(CImp和AImpl需要创建方法而不是一个表达式)
有什么办法可以不用XML就能完善我的spring配置?
更新
我也不想用与弹簧相关的注释(例如@Component)来污染我的类。而且我更喜欢构造函数注入而不是任何其他注入。扫描也不是优选的解决方案。
那么,我可以Guice方式做Spring吗?
upd2
所以我想存档
自动接线
构造函数注入
不带
XML格式
路径扫描
最佳答案
可以使用自动装配代替使用Java代码创建Bean。您可以在Java配置中定义ComponentScan。您不需要使用任何XML文件。