Spring-boot создает bean только при вызове действия - PullRequest
0 голосов
/ 13 июля 2020

У меня есть код конфигурации пружины, который создает Spring bean

@Bean
public MongoTemplate mongoTemplate() throws Exception {
    return new MongoTemplate(mongoDbFactory());
}

В каком-то классе я использую, как показано ниже

@Autowired
private MongoTemplate  mongoTemplate ; 

Bean создается всякий раз, когда весна запускается, но из-за некоторой службы я хочу убедиться, что bean-компонент должен создаваться только тогда, когда действие вызывается для объекта

, например mongoTemplate.save et c

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

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

Создайте класс util, который переключается между сервисами или базами данных в зависимости от условий, которые вы хотите.

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

0 голосов
/ 13 июля 2020

Доступны прокси-серверы CGLIB и отложенная инициализация .

    @Lazy
    @Scope(proxyMode = ScopedProxyMode.TARGET_CLASS)
    public MongoTemplate mongoTemplate() throws Exception {
        return new MongoTemplate(mongoDbFactory());
    }
...