gpt4 book ai didi

sql-server - 没有可用的 'org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder' 类型的合格 bean

转载 作者:行者123 更新时间:2023-12-03 00:31:35 25 4
gpt4 key购买 nike

在Java项目中,我使用的是Sprig Boot 1.5.3.RELEASE。它与两个数据库连接,即 MongoDB 和 Microsoft SQLServer。当我以 spring-boot:run 目标运行它时,它工作正常。但是,当我尝试使用 package 目标运行它时,测试用例会报告以下错误,尽管这些测试用例未连接到 SQL Server 数据库:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1486)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1104)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:467)
.....
.....

MediationTest.java(包含生成上述错误的测试用例的 Java 类)

@RunWith(SpringRunner.class)
@DataMongoTest(excludeAutoConfiguration = EmbeddedMongoAutoConfiguration.class)
@SpringBootTest(classes = { Application.class })
public class MediationTest {

@Autowired
private SwiftFormat swiftFormat;
......................
......................

MsqlDbConfig.java

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(entityManagerFactoryRef = "msqlEntityManagerFactory", transactionManagerRef = "msqlTransactionManager", basePackages = { "com.msql.data" })
public class MsqlDbConfig {

@Bean(name = "msqlDataSource")
@ConfigurationProperties(prefix = "msql.datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}

@Bean(name = "msqlEntityManagerFactory")
public LocalContainerEntityManagerFactoryBean msqlEntityManagerFactory(
EntityManagerFactoryBuilder builder,
@Qualifier("msqlDataSource") DataSource dataSource) {
return builder.dataSource(dataSource)
.packages("com.utils.msql.info")
.persistenceUnit("msql").build();
}

@Bean(name = "msqlTransactionManager")
public PlatformTransactionManager msqlTransactionManager(
@Qualifier("msqlEntityManagerFactory") EntityManagerFactory msqlEntityManagerFactory) {
return new JpaTransactionManager(msqlEntityManagerFactory);
}
}

application.properties

spring.data.mongodb.uri=mongodb://dev-abc-123:27017/db

msql.datasource.url=jdbc:sqlserver://ABC-SQL14-WXX;databaseName=dev
msql.datasource.username=dev
msql.datasource.password=*****
msql.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
msql.jpa.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy
spring.jpa.show-sql=true

最佳答案

spring-boot:run 目标由 spring-boot-maven-plugin 项目中包含的 Mojo 定义。你可以在这里找到它。 https://github.com/spring-projects/spring-boot/blob/8e3baf3130220a331d540cb07e1aca263b721b38/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/RunMojo.java .

requiresDependencyResolution 范围设置为“测试”。这将包括类路径上每个阶段的依赖关系。请查看此处的规范。 https://maven.apache.org/developers/mojo-api-specification.html

Maven 提供的 package 目标不会包含对类路径的这些额外依赖项,我相信这就是导致您出现问题的原因。

Spring Boot 提供了一个重新打包目标,应该用于构建可执行的 spring-boot 应用程序。

但是,为了更切题。我认为如果您更新测试以排除额外的类,它可能会解决您的问题。

@DataMongoTest(excludeAutoConfiguration = {EmbeddedMongoAutoConfiguration.class, HibernateJpaAutoConfiguration.class})

关于sql-server - 没有可用的 'org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder' 类型的合格 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45213379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com