весной, как вызвать создание бина JpaTransactionManager для ChainedTransactionManager - PullRequest
0 голосов
/ 15 апреля 2020

У нас есть существующий источник данных, который находится в спящем режиме для нашего приложения Spring Boot.

Теперь мы хотели бы также использовать Neo4j, для которого требуется собственный менеджер транзакций. Это приведет к двум менеджерам транзакций.

Теперь из того, что мы собрали, нам нужно использовать ChainedTransactionManager, где мы передаем JpaTransactionManager и Neo4jTransactionManager в качестве параметров.

Единственная проблема в том, что когда мы создаем менеджер ChainedTransaction, например, следующим образом

    @Bean
    public PlatformTransactionManager chainedTransactionManager(SessionFactory sessionFactory,
                                                                Neo4jProperties properties,
                                                                ObjectProvider<TransactionManagerCustomizers> transactionManagerCustomizers) {
        JpaTransactionManager jpaTransactionManager = jpaTransactionManager(transactionManagerCustomizers.getIfAvailable());
        Neo4jTransactionManager neo4jTransactionManager = neo4jtransactionManager(sessionFactory, properties, transactionManagerCustomizers);
        return new ChainedTransactionManager(neo4jTransactionManager);
    }

, тогда проблема в том, что нам кажется, что нам нужно скопировать и / или написать почти весь код в JpaBaseConfiguration, предоставленный Spring, потому что в Весенний класс это говорит.

    @Bean
    @ConditionalOnMissingBean
    public PlatformTransactionManager transactionManager() {
        JpaTransactionManager transactionManager = new JpaTransactionManager();
        if (this.transactionManagerCustomizers != null) {
            this.transactionManagerCustomizers.customize(transactionManager);
        }
        return transactionManager;
    }

Где метод не срабатывает (я считаю, из-за @ConditionalOnMissingBean). Итак, как нам заставить этот метод работать и создать JpaTransactionManager, который мы можем автоматически связать перед созданием нашего менеджера.

По крайней мере, если мы не можем создать JpaTransactionManager, нам бы хотелось иметь другие классы EntityManagerFactoryBuilder, которые также аннотируется @ConditionalOnMissingBean быть создан.

Как мы могли бы достичь вышеупомянутого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...