Nano Hash - криптовалюты, майнинг, программирование

Нет доступного bean-компонента с именем "transactionManager"

Когда я пытался создать отношения с помощью кода Spring, я получаю ошибку диспетчера транзакций. В своем проекте я использую базы данных Mysql и Neo4j. Я пробую другое решение, но не могу решить.

org.springframework.beans.factory.NoSuchBeanDefinitionException: Нет доступного bean-компонента с именем 'transactionManager': для квалификатора 'transactionManager' не найдено ни одного подходящего bean-компонента PlatformTransactionManager - ни совпадение квалификатора, ни совпадение имени bean-компонента!

Файл Pom.xml, как показано ниже

 <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.10.RELEASE</version>
    </parent>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>1.5.10.RELEASE</version>
        </dependency>

        <!-- For Neo4J Graph Database -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-neo4j</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.9-rc</version>
        </dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    <version>1.5.10.RELEASE</version>
</dependency>
 <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
    </dependency>

    </dependencies>

    <properties>
        <java.version>1.8</java.version>
        <thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
        <thymeleaf-layout-dialect.version>2.1.1</thymeleaf-layout-dialect.version>
    </properties>
</project>

Application.class

    @SpringBootApplication
    @EnableTransactionManagement
    @EntityScan("projectone.entities")
    public class Application {

        public static void main(String[] args) {
            //For Starting application
            ApplicationContext applicationContext=SpringApplication.run(Application.class, args);

        }
    }

Файл конфигурации базы данных:

@Configuration
@EnableJpaRepositories(basePackages = {"projectone.mysql"},
        entityManagerFactoryRef = "dbEntityManager",
        transactionManagerRef = "dbTransactionManager")
@EnableTransactionManagement
public class DatabaseConfiguration {

     @Autowired


 private Environment env;
        @Bean
        @Primary
        public LocalContainerEntityManagerFactoryBean dbEntityManager() {
            LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
            em.setDataSource(dbDatasource());
            em.setPackagesToScan(new String[]{"projectone.mysql"});
            em.setPersistenceUnitName("dbEntityManager");
            HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
            em.setJpaVendorAdapter(vendorAdapter);

            HashMap<String, Object> properties = new HashMap<>();

            properties.put("hibernate.dialect",env.getProperty("hibernate.dialect"));
            properties.put("hibernate.show-sql",env.getProperty("jdbc.show-sql"));


            em.setJpaPropertyMap(properties);
            return em;
        }
        @Primary
        @Bean
        public DataSource dbDatasource() {
            DriverManagerDataSource dataSource
                    = new DriverManagerDataSource();
            dataSource.setDriverClassName(
                    env.getProperty("spring.datasource.driverClassName"));
            dataSource.setUrl(env.getProperty("spring.datasource.url"));
            dataSource.setUsername(env.getProperty("spring.datasource.username"));
            dataSource.setPassword(env.getProperty("spring.datasource.password"));
            return dataSource;
        }
        @Primary
        @Bean
        public PlatformTransactionManager dbTransactionManager() {
            JpaTransactionManager transactionManager
                    = new JpaTransactionManager();
            transactionManager.setEntityManagerFactory(
                    dbEntityManager().getObject());
            return transactionManager;
        }

}

Я попробовал минимальную конфигурацию, удалив класс конфигурации базы данных. После этого мое приложение не запускается, и я получаю сообщение об ошибке Person is not a managed Bean.

введите описание изображения здесь

Если я использую только аннотацию @SpringBootApplication, я получаю следующее исключение: он бросает

    org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'mappingController': Unsatisfied dependency expressed through field 'branchService'; 
nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'branchServiceImplementaion': Unsatisfied dependency expressed through field 'branchRepository'; 

nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'branchRepository': Unsatisfied dependency expressed through method 'setSession' parameter 0; 

nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.data.neo4j.transaction.SharedSessionCreator#0': Cannot resolve reference to bean 'sessionFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [org/springframework/boot/autoconfigure/data/neo4j/Neo4jDataAutoConfiguration.class]: Bean instantiation via factory method failed;

 nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.neo4j.ogm.session.SessionFactory]: Factory method 'sessionFactory' threw exception; nested exception is NullPointerException

  • Удалите свой DatabaseConfiguration класс и поместите свой @SpringBootApplication аннотированный класс в projectone базовый пакет. 19.02.2018
  • PDO: stackoverflow.com/questions/10719646/ 19.02.2018
  • @ M.Deinum Мой класс приложения уже находится в базовом пакете. Если я удалю класс конфигурации базы данных, сущности Neo4J и MySQL конфликтуют и выдают ошибку. 20.02.2018
  • Для этого вам по-прежнему не требуется полное изменение конфигурации пружины. Я также не понимаю, почему они конфликтуют (не могли бы вы добавить исключение). 20.02.2018
  • @ M.Deinum Я попробую еще раз эту конфигурацию и опубликую исключение 20.02.2018
  • @ M.Deinum Я выполнил настройку, как вы сказали, и пробовал другие подобные вещи, но я не могу запустить проект. Человек не является управляемым компонентом. Я также приложил к этому сообщению снимок экрана с этой ошибкой. 21.02.2018
  • У вас есть @EntityScan, и это не распространяется на ваши объекты mysql, поэтому, очевидно, вы получите исключение. Но зачем вам это нужно? Конфигурация по умолчанию должна точно определять, что такое Neo4J или JPA (аннотации и репозитории разные). 21.02.2018
  • @ M.Deinum В случае по умолчанию (только SpringBootApplication) он не может найти мой Neo4jService. У меня есть MappingController, где у меня есть объект @AutoWired branchService для класса Neo4j Service BranchService. Подробную ошибку я опубликовал в вопросе. 22.02.2018
  • @ M.Deinum Я создал отдельный вопрос с базовой конфигурацией и получением некоторой ошибки. Пожалуйста, посмотрите stackoverflow.com/questions/48919998/ 22.02.2018

Ответы:


1

Наконец я нашел ошибку:

 @Bean
        public PlatformTransactionManager dbTransactionManager() {
            JpaTransactionManager transactionManager
                    = new JpaTransactionManager();
            transactionManager.setEntityManagerFactory(
                    dbEntityManager().getObject());
            return transactionManager;
        }

В этом разделе есть ошибка, которая вызвала вышеуказанную проблему. измените @Bean на @Bean (name = "transactionManager"), и это решит проблему.

03.03.2018

2

У меня была такая же проблема, но мне не хватало конфигурации transactionManagerRef = "dbTransactionManager" в @EnableJpaRepositories

11.10.2019
  • Это работает, когда создается пользовательский источник данных и bean-компонент менеджера транскрипции, у которого нет ссылочного имени как «transactionManager». Например: @ Configuration @ EnableTransactionManagement @ EnableJpaRepositories (transactionManagerRef = customTxMgr, entityManagerFactoryRef = ..}) открытый класс InstrumentDatasourceConfig {@ Bean (name = customTxMgr) public PlatformTransactionManager transactionManager (...) {}} 23.05.2020

  • 3

    решить: изменить имя функции с:

    public PlatformTransactionManager dbTransactionManager(){}
    

    to:

    public PlatformTransactionManager transactionManager(){}
    
    10.06.2020

    4

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

    11.09.2018
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..