java - 一个组件需要一个名为 'jpaTransactionManager' 的 bean,但找不到

标签 java spring hibernate

我正在使用 Spring Boot、Hibernate 5 和 MySQL DB 开发网络应用程序。尝试启动应用程序时我收到这样的消息:

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2017-03-29 09:36:59.862 ERROR 9312 --- [           main] o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

A component required a bean named 'jpaTransactionManager' that could not be found.


Action:

Consider defining a bean named 'jpaTransactionManager' in your configuration.

我的配置如下:

应用程序属性:

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>zapisano</groupId>
    <artifactId>project-back-spring</artifactId>
    <version>0.1.0</version>

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

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.googlecode.soundlibs</groupId>
            <artifactId>mp3spi</artifactId>
            <version>1.9.5-1</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.2.9.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.2.3.Final</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.16</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.34</version>
        </dependency>
    </dependencies>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

应用程序.java:

package core;

import core.storage.StorageProperties;
import core.storage.StorageService;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
@EnableConfigurationProperties(StorageProperties.class)
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Bean
    CommandLineRunner init(StorageService storageService) {
        return (args) -> {
            storageService.deleteAll();
            storageService.init();
        };
    }
}

我想有几种方法可以显式声明名为“jpaTransactionManager”的 bean。在 .xml 或 application.properties 中使用 Spring 配置。

在这种情况下我有 3 个问题:

  • 声明名为“jpaTransactionManager”的 bean 的最佳方式是什么?
  • 可以自动完成吗?
  • 我可以不用 .xml 吗?

最佳答案

我不确定它是否可以自动完成,我认为你需要声明它。 好的做法是将您的配置放在单独的@Configuration bean 中(不需要 xml 配置),您可以在其中定义 jpaTransactionManager。

你可以找到这样的例子here .

关于java - 一个组件需要一个名为 'jpaTransactionManager' 的 bean,但找不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43086733/

相关文章:

java - 配置@PathVariable类型不匹配的错误页面

java - Spring @Transactional 合并和持久化问题

java - @CompoundIndex 在 Spring Data MongoDB 中不起作用

java - 延迟加载处理(Hibernate + Spring MVC)

java - Ignite for Hibernate L2 非常慢

java - 如何在套件中执行多个测试用例时一次又一次地打开 android 应用程序而无需安装?

java - 通过多种 Intent 正确地传递值

java - 需要知道每个字段是否已更改,我应该如何在 Hibernate 中对其进行建模

java - jar 文件在 lib 目录中的位置

java - 如何获得跟踪图像的角落?