我有一个守护,可它需要插入数据到数据库.不知道怎样注入Bean服务,所以目前是这样的:
public static void main(String[] args) {
Thread daemon=new Thread(new DaemonRun());
daemon.setDaemon(true);
daemon.start();
SpringApplication.run(Application.class, args);
}
....
public class DaemonRun implements Runnable {
private DataService dataService;
public synchronized DataService getDataService(){
if(dataService==null)
dataService=(DataService)SpringApplicationContextHolder.getSpringBean("dataService");
return dataService;
}
有没有办法让DataService 自动注入DaemonRun同时DaemonRun又开机运行在一个独立线程里呢?
皆さんごめんなさい、私は自分で方法を見つけました。: http://stackoverflow.com/ques...
答えによると、それを
@Component
class ThreadRunimplements DisposableBean....に変更します。その後、構造内でスレッドを開始し、destroyでスレッドを閉じると、自動インジェクションを使用できます
インターフェースの Bean を自動的に注入したいということですよね? Spring の抽象クラス Bean またはインターフェイス オブジェクトのインジェクションを参照できます
インジェクション用の Runnable を実装する抽象クラス DataService を作成します。それから延長します。
springbean のライフサイクルは beanFactory の作成時に完了するため、オブジェクトは作成時にのみ注入する必要があり、これは Spring の概念と矛盾します。
以下はスタックオーバーフローからの抜粋です
リーリー自動インジェクションを使用して、プロトタイプとしてスコープを構成してみてください。
このスレッドは何に使われますか?