春天何时使用以下代码?如果包括在线以下会有什么影响?
getAutowireCapableBeanFactory().autowireBean(someBean)
谢谢!
答案 0 :(得分:3)
一般来说,答案是“从不”。这是一个内部的Spring函数,当你可以自己使用它时,你很可能不应该这样做。
您可以使用它将依赖项自动装配到您自己创建的对象中,但这是一个非常专业的用例,您不需要99.99%的时间。
答案 1 :(得分:0)
我遇到了如下使用场景:
具体来说:我有2个项目,p1和p2。
p1:该项目有一个类A,该类使用@Resource批注将一个bean B自动连接到Spring IOC,而类A的方法f()使用了atuowired bean B。
public class A{
@Resource
B b;
public void action() {
System.out.println(b == null);
b.dosth();
}
}
p2:该项目通过反射调用A的操作方法。
URL url1 = new URL(jarPath); // "file:D:/jarload/test.jar"
URLClassLoader myClassLoader1 = new URLClassLoader(new URL[] { url1 },
Thread.currentThread().getContextClassLoader());
Class<?> myClass1 = myClassLoader1.loadClass(classFullName);
Object obj = myClass1.newInstance();
// this.context.getAutowireCapableBeanFactory().autowireBean(obj); //without this,the b will be null.
Method method = myClass1.getDeclaredMethod("action");
method.invoke(obj);
希望对您有帮助!