Spring 启动多项目 Maven 应用程序上下文错误
Spring Boot Multi Project Maven Application Context Error
我正在为 Maven 的多项目设置而苦苦挣扎。一切都使用 Spring 引导和注释。
我正在使用一个项目进行数据访问。配置文件是这样的:
@Configuration
@EnableJpaRepositories(basePackages = { "de.bvk.infra.g_portal.dataaccess.Repository" })
@EntityScan
public class DataConfiguration {
}
存储库用于 @Autowired
的测试。这 运行 很好,我可以 运行 我在 Eclipse 中的测试以及 mvn clean install
。
我有第二个 "service" 项目,它依赖于 "data-access" 项目。配置如下所示:
@Import({DataConfiguration.class})
@Configuration
public class ServiceTestConfiguration {
@Autowired
DataConfiguration dataConfiguration;
@Autowired
BenutzerRepository benutzerRepository;
....
我可以 运行 在 Eclipse 中对服务项目进行所有测试,并且工作正常。
当我尝试 运行 使用 Maven 的项目时,我得到一个 ApplicationContextError
:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type [de.bvk.infra.g_portal.dataaccess.repository.BenutzerRepository]
found for dependency: expected at least 1 bean which qualifies as autowire
candidate for this dependency. Dependency annotations:
{@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1301)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1047)
...
你能告诉我为什么 Maven 的行为与 Eclipse 不同吗?
与 Maven 相比,Eclipse 对依赖项的概念明显更加有限;特别是,它不考虑范围,因此您可以在测试范围内引用 类,例如,从您的普通 类。我建议从使用 mvn dependency:tree
开始,以确保您包含了您认为属于适当范围的内容,然后打开 org.springframework.data
到 DEBUG
的日志记录以查看存储库是什么正在注册。
显然这是一个简单的错误。
我不得不改变
@EnableJpaRepositories(basePackages = { "de.bvk.infra.g_portal.dataaccess.Repository" })
进入
@EnableJpaRepositories(basePackages = { "de.bvk.infra.g_portal.dataaccess.repository" })
我正在为 Maven 的多项目设置而苦苦挣扎。一切都使用 Spring 引导和注释。
我正在使用一个项目进行数据访问。配置文件是这样的:
@Configuration
@EnableJpaRepositories(basePackages = { "de.bvk.infra.g_portal.dataaccess.Repository" })
@EntityScan
public class DataConfiguration {
}
存储库用于 @Autowired
的测试。这 运行 很好,我可以 运行 我在 Eclipse 中的测试以及 mvn clean install
。
我有第二个 "service" 项目,它依赖于 "data-access" 项目。配置如下所示:
@Import({DataConfiguration.class})
@Configuration
public class ServiceTestConfiguration {
@Autowired
DataConfiguration dataConfiguration;
@Autowired
BenutzerRepository benutzerRepository;
....
我可以 运行 在 Eclipse 中对服务项目进行所有测试,并且工作正常。
当我尝试 运行 使用 Maven 的项目时,我得到一个 ApplicationContextError
:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type [de.bvk.infra.g_portal.dataaccess.repository.BenutzerRepository]
found for dependency: expected at least 1 bean which qualifies as autowire
candidate for this dependency. Dependency annotations:
{@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1301)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1047)
...
你能告诉我为什么 Maven 的行为与 Eclipse 不同吗?
与 Maven 相比,Eclipse 对依赖项的概念明显更加有限;特别是,它不考虑范围,因此您可以在测试范围内引用 类,例如,从您的普通 类。我建议从使用 mvn dependency:tree
开始,以确保您包含了您认为属于适当范围的内容,然后打开 org.springframework.data
到 DEBUG
的日志记录以查看存储库是什么正在注册。
显然这是一个简单的错误。
我不得不改变
@EnableJpaRepositories(basePackages = { "de.bvk.infra.g_portal.dataaccess.Repository" })
进入
@EnableJpaRepositories(basePackages = { "de.bvk.infra.g_portal.dataaccess.repository" })