java使用Spring容器在非Spring对象上调用方法,允许参数连接?
我有一个在容器外部创建的对象。此对象有一个方法accept(...)
。请注意,这不是接口方法,因为参数的数量和类型未知
无论如何,我还有accept()
方法的Method
我希望在Spring应用程序上下文中执行此方法,允许Spring在运行方法之前自动连接方法参数
例如:
public class MyCmd {
public long accept(@AutoWire MyService service) {
...
}
}
后来:
MyCmd cmd = new MyCmd(); // no spring here!
magicRunner.invoke(cmd); // magic here
在这里,我希望能够运行accept()
,但让Spring将MyService
作为方法的参数注入
春天有这样的天气吗?或者我必须手动完成所有这些
# 1 楼答案
我认为,通过方法参数混合反射和Spring自动连接是很难做到的,但仍然有一种方法看起来与您试图实现的方法相当(如果我正确理解的话)
MyCmd
可以在AplicationContext
中的“原型”作用域中注册。它将与其他现有SpringBean自动连接,但每次在上下文中查找时都会返回一个新实例:现在,当您需要使用
MyCmd
时:# 2 楼答案
是的,您可以使用
@Configurable
在Spring中使用AspectJ注入依赖项域对象Here's the documentation on @Configurable.
构造函数DI的示例:
但要注意:从这一点上看,这是一个Spring管理的bean,因此您不能将其实例化为:
但是,您必须像往常一样注入依赖项