一点背景:
我正在使用Spring 2.5,特别是Spring IOC和注释.
我@Autowired在我的代码中使用(自动装配是按类型完成的)并 @Component用于将类暴露给自动接线.
我试图测试我的代码时出现了下面描述的情况.
现在来问题:
注意:我为Test环境使用不同的Spring Context.
我有一个类FOO,@Autowired但在测试上下文中我想使用相同类型的不同类MockFoo(extends FOO).
当然,建立春季由于对的依赖注入多个选项自动故障FOO类(包括FOO并MockFOO符合该类型检查).
我正在寻找一种方法来注入测试bean而不是原始的bean.
我希望Spring允许使用Context配置文件来覆盖bean注入或命令Spring不要自动装配特定的bean.
但
所有这些选项似乎只存在于最初在Spring Context Configuration文件中定义的bean.
我试图使用Log4j作为Spring Framework的一部分,据我所知,通过使用适当的bean,系统应该映射代码中可访问的单例实例,同时自动将日志记录深度映射到类
类似于Log4J的正常使用
Logger log = Logger.getLogger(getClass());
我一直在使用以下Spring bean定义
<bean id="log4jInitialization"
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass"
value="org.springframework.util.Log4jConfigurer" />
<property name="targetMethod" value="initLogging" />
<property name="arguments">
<list>
<value>conf\log4j.xml</value>
</list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
但我无法将此bean映射到给定类中的特定成员,也无法通过@autowired使用它
如果有更好的方法来集成Log4j和Spring,请告诉我
最好的祝福
标记
**更改了示例以更好地表达情况
我使用的是2.5版弹簧并且有以下情况
@Component
@Scope("prototype")
Class Foo
{
}
class A
{
@Autowired
Foo fooA;
}
class B
{
@Autowired
Foo fooB;
}
class C
{
@Autowired
Foo fooC;
}
Run Code Online (Sandbox Code Playgroud)
我想了解是否有某种方式来使用@Autowired和绑定的同一个实例FOO上
fooA,并fooB同时结合不同的实例fooC
我明白,如果它的范围FOO将是singleton有效的
但是如果有一种方法可以在使用protoype示波器时达到相同的目标,我就会徘徊.
还请解释一下这是自动装配概念的正确用法吗?我试图滥用弹簧框架的目的