如何将会话范围的bean用于批处理

时间:2017-01-31 06:36:55

标签: java spring session

我创建了以下课程

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

我想@Autowire将这个类用于我在会话之外的批处理。 我想在会话之外使用会话范围的bean,那我怎么能这样做呢? 有没有其他方法可以使用该bean。

请建议我。

1 个答案:

答案 0 :(得分:1)

您可以在开始时(会话存在的位置)将会话信息作为作业参数传递,然后访问参数e.g. from reader

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

...

jobLauncher.run(yourJob, params);

并在阅读器中获取信息

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