以下是给定的类:
package com.acme;
public class Foo {
private Bar bar;
public void setBar(Bar newBar) {
this.bar = newBar;
}
}
@AcmeService
public interface Bar {}
并且一个Spring配置文件如下:
<beans>
<bean id="foo" class="com.acme.Foo">
<property name="bar" ref="bar" />
</bean>
</beans>
当Spring的配置阶段运行时,是否可以执行以下操作?
- 捕获缺少依赖项异常(或检测到将要发生的异常)
- 发现bean“foo”的缺少依赖项“bar”是类型为com.acme.Bar
- 注意Bar是@AcmeService,因此我们将处理它。否则,错误可以被视为致命错误
- 生成类型为com.acme.Bar的代理
- 将Bar代理注入Foo,确保可以像在Spring配置文件中显式创建Bar代理并将代理注入Foo bean一样使用Spring AOP对Bar上的方法调用进行通知。
如果你想知道的话,底层用例是我想:
- 用单个上下文文件替换所有带有服务层bean定义的Spring上下文文件,并生成@AcmeService bean接口的代理。
- 通知针对这些代理的调用改为在服务层bean代理的接口模拟上调用。(问题在于模拟是由远程系统在运行时定义的,并上传到此应用程序以进行集成测试。对于我的常规单元测试,我会像需要的那样创建和注入模拟)。