Как инициализировать SpringContext один раз и делиться между задачами?

Я пытаюсь инициализировать весенний контекст в моем приложении Spark. Мне нужен контекст в моих подчиненных узлах, а также я хочу повторно использовать бины. Вот код для того же самого:-

shipperRD2.foreach(shipper->{

 AmazonS3 amazonS3Client = AmazonS3ClientBuilder.standard().build();
                    FileSystemXmlApplicationContext context2 = new FileSystemXmlApplicationContext("https://s3.console.aws.amazon.com/s3/object/spring-configuration/app-context.xml");

PersistenceWrapper persistenceWrapper = context.getBean(PersistenceWrapper.class);
});

Однако это приводит к обновлению контекста каждый раз, когда на подчиненном узле запускается новая задача. Есть ли способ избежать такого поведения. в основном, просто инициализируйте контекст при первом запуске задачи и повторно используйте этот контекст в последующих задачах.

1 ответ

Решение

Как упомянул Яцек, я попробовал шаблон синглтона, и он работал.

public class SpringInit {

    private static FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext(fileName);

    private SpringInit(){
    }

    public static FileSystemXmlApplicationContext getInstance(){
        return context;
    }
 }

От искры

shipperRD2.foreach(shipper->{

  FileSystemXmlApplicationContext context = SpringInit.getInstance();
PersistenceWrapper persistenceWrapper = context.getBean(PersistenceWrapper.class);
});
Другие вопросы по тегам