2016-03-21 10 views
0

クラスインスタンスを動的に作成し、メソッド-model.getClassInstance().method();を呼び出すクラス(サービスレイヤ)を使用しています。このメソッドは、抽象メソッドを呼び出し、継承されたクラスで実装します。 継承クラスにはDBにアクセスするための@autowiredが含まれていますが、このクラスはnew Object()のようにインスタンス化することで呼び出されるため、フィールドをオートワイヤリングできません(NullPointer例外)。動的に呼び出されるメソッドに@Autowiredを含める方法

@Serviceまたは@Controllerまたは@Componentを持たないでフィールドを自動配線する方法はありますか?

spring-servlet.xmlに継承クラスを追加してみましたが、使用しませんでした。

私を助けてください。

答えて

1

新しいオブジェクトの代わりにスプリングビーンを使用してそのオブジェクトを作成できますか?なぜなら、春はこのオブジェクトを制御できないからです。

これはオプションではない場合は、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); 
} 
+0

@Kishoreありがとう.. –

関連する問題