我试图在Spring Web应用程序中使用专门的子类进行测试。
应用程序上下文xml文件通过完全限定的类名引用几个bean属性中的类,如下所示:
<bean id="blahblah" class="x.y.z.Blah">
<property name="myFooAttribute" ref="x.y.z.Foo"/>
</bean>
我想在所使用的任何地方实例化并使用x.y.z.Bar
代替x.y.z.Foo
。
在我的测试中,我正在使用基于Java的配置并导入XML配置(遗留的东西,我真的不想太乱),因为当我将要感觉更自然时修补内容并使用内联声明的模拟。
@Configuration
@ImportResource({
"classpath:applicationContext-common.xml",
"classpath:app-servlet.xml"
})
static class TestConfig {
static class Bar extends Foo {
//some stuff overridden here
}
}
如何让所有引用x.y.z.Foo
的地方改为使用我的Bar
课程?最好不要更改xml文件...
答案 0 :(得分:0)
创建一个名为您尝试覆盖的类的bean。可以使用Bean
注释在Java样式配置中实现。
@Configuration
@ImportResource({
"classpath:applicationContext-common.xml",
"classpath:app-servlet.xml"
})
static class TestConfig {
static class Bar extends Foo {
//some stuff overridden here
}
private Bar myTestBar = new Bar();
@Bean(name="x.y.z.Foo")
public Foo getFoo() {
return myTestBar;
}
}