如何将@Autowired包含在动态调用的方法中

时间:2016-03-21 05:37:56

标签: spring spring-mvc

我有一个类(服务层),它动态创建类实例并调用方法 - model.getClassInstance().method();,此方法实习生调用另一个抽象方法并在继承类中实现。 继承类包含@autowired来访问DB,但由于这个类是通过实例化new Object()来调用的,所以我无法自动装配字段(NullPointer异常)。

那么有没有办法在没有 @Service或@Controller或@Component?的情况下自动连接该字段?

我尝试将继承的类添加到 spring-servlet.xml 作为bean但没有用。

请帮帮我。

1 个答案:

答案 0 :(得分:2)

是否可以使用spring bean而不是new对象创建该对象?因为那时春天无法控制这个物体。

如果这不是一个选项,那么您可以通过使用AutowireCapableBeanFactory并在您的对象上调用autowireBean(Object existingBean)来执行此操作。这个方法使对象像对待Spring一样对待。

private @Autowired AutowireCapableBeanFactory autowireCapableBeanFactory;

public void func() 
{
   Employee employee = // Dynamically loaded object.

   // After this below line, employee object will have its dependecies injected.
   autowireCapableBeanFactory.autowireBean(employee);
}