2017-01-31 18 views
1

私が作成した以下のクラスにBeanをスコープは、バッチ処理

@Component 
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS) 
public class ApplicationUserInfo implements Serializable { 
    private String user; 
    private Integer companynumber; 
} 

私は鼎@Autowireがセッション外である私のバッチ処理にこのクラスを使用するようにしています。 セッションスコープ付きBeanをセッション外で使用したいのですが、どうすればこのことができますか? そのBeanを使用する他の方法はありません。

お願いします。

+0

セッション外ではどういう意味ですか?要求応答の全体の流れが完了するまで、それは1つのセッションと見なされるからです。 – Ankit

+0

ジョブがスケジュールされるとき、このジョブをスケジューリングする前にわからないので、私はそのBeanにアクセスする必要があります。 – Siddharth

答えて

1

あなたが起動時にジョブパラメータとしてセッション情報を渡す(セッションが存在する場合)、その後e.g. from reader

JobParameters params = new JobParametersBuilder() 
       .addString("user", sessionInfo.getUser()) 
       .toJobParameters(); 

...

jobLauncher.run(yourJob, params); 

そして、情報を取得するためのパラメータにアクセスすることができます読者の方

@Value("#{jobParameters['user']}") 
+0

バッチで実行中のジョブからセッションスコープBeanに値を戻す方法 –