【问题标题】:Spring Data Not Autowiring Entity from Dependency JARSpring Data 不从依赖 JAR 中自动装配实体
【发布时间】:2017-02-16 21:37:11
【问题描述】:

我有一个包含依赖项 JAR 的 WAR。 JAR 包含横切关注点,也是由我编写的。我正在使用 Spring 4.2.3 和 Spring-data-jpa 1.9.1,我的配置是基于注释的。我部署到 Wildfly 10.1.0。

JAR 编译良好,我将其安装到本地 Maven 存储库。在 WAR 中,JAR 作为依赖项包含在内。到目前为止一切顺利。

在 WAR 的 Spring Configuration 文件上,我导入 Spring Configuration JAR 文件。

现在,当我拥有正常的 Spring Bean(服务或组件)时,一切正常,Spring 找到并解决了我的 JAR 中的所有依赖项和 Spring Bean,然后我可以从我的 WAR 中的代码中调用它们。

但是,一旦我添加了一个存储库和一个实体,Spring 就找不到该实体,随后我的 WAR 编译但它没有部署。我必须注意,如果我将 JAR 代码直接放入我的 WAR 中,那么所有这些都有效。我想我缺少一个配置,但我不知道还能去哪里看。

任何帮助将不胜感激。下面的代码和堆栈跟踪:

在部署时,我收到以下错误: 创建名为“synapseRepo”的 bean 时出错:调用 init 方法失败;嵌套异常是 java.lang.IllegalArgumentException: Not an managed type: class hyphen.synapse.data.model.Role

因此,错误非常简单,但我不确定让 Spring 了解我的实体还缺少什么。

谢谢。

用于配置的 JAR 代码:

@Configuration
@ComponentScan("hyphen.synapse")
@EnableTransactionManagement
@EnableJpaRepositories("hyphen.synapse.data")
@PropertySource("classpath:application.properties")
public class SynapseApplicationConfig {
...
}

存储库的 JAR 代码:

package hyphen.synapse.data.repo;

import hyphen.synapse.data.model.*;
import org.springframework.data.repository.*;

public interface SynapseRepo extends CrudRepository<Role, Long> {

}

实体的 JAR 代码:

package hyphen.synapse.data.model;

import javax.persistence.*;

@Entity
@Table(name = "ROLE")
public class Role extends SynapseBaseEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    @Column(name = "NAME")
    private String name;


    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

用于配置的 WAR 代码:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories("hyphen.cmd.data")
@PropertySource("classpath:application.properties")
@Import(hyphen.synapse.app.config.SynapseApplicationConfig.class)
public class ApplicationConfig {
...
}

用于注入的 WAR 代码:

package hyphen.synapse.data.dao;

import ...;

@Service
public class SynapseDao {
    @Inject
    private SynapseRepo synapseRepo;

    @Inject
    private EmailService emailService;

顺便说一句,JAR 中也定义了 EmailService,它是正确自动装配的。

以下代码行导致错误:

public interface SynapseRepo extends CrudRepository<Role, Long> ...

Spring 无法自动装配实体,在本例中为角色。我也知道 Role 不包含任何 Spring 注释。但是,我在 WAR 中有完全相同的代码并且它工作正常,但是使用依赖项 JAR 中包含的代码从 WAR 调用它似乎有问题。

堆栈跟踪:

2017-02-16 22:38:19,666 WARN  [org.springframework.web.context.support.XmlWebApplicationContext] (ServerService Thread Pool -- 218) Exception encountered during context initialization - cancelling refresh at
tempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'synapseServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.f
actory.BeanCreationException: Could not autowire field: private hyphen.synapse.data.dao.SynapseDao hyphen.synapse.business.service.impl.SynapseServiceImpl.synapseDao; nested exception is org.springframework.
beans.factory.BeanCreationException: Error creating bean with name 'synapseDao': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could
 not autowire field: private hyphen.synapse.data.repo.SynapseRepo hyphen.synapse.data.dao.SynapseDao.synapseRepo; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating b
ean with name 'synapseRepo': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not an managed type: class hyphen.synapse.data.model.Role
2017-02-16 22:38:19,666 ERROR [org.springframework.web.servlet.DispatcherServlet] (ServerService Thread Pool -- 218) Context initialization failed: org.springframework.beans.factory.BeanCreationException: Er
ror creating bean with name 'synapseServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private hy
phen.synapse.data.dao.SynapseDao hyphen.synapse.business.service.impl.SynapseServiceImpl.synapseDao; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name
 'synapseDao': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private hyphen.synapse.data.repo.SynapseRepo
hyphen.synapse.data.dao.SynapseDao.synapseRepo; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'synapseRepo': Invocation of init method failed; nes
ted exception is java.lang.IllegalArgumentException: Not an managed type: class hyphen.synapse.data.model.Role
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:838)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537)
        at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:667)
        at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:633)
        at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:681)
        at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:552)
        at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:493)
        at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
        at javax.servlet.GenericServlet.init(GenericServlet.java:244)
        at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:117)
        at org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init(RunAsLifecycleInterceptor.java:78)
        at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:103)
        at io.undertow.servlet.core.ManagedServlet$DefaultInstanceStrategy.start(ManagedServlet.java:250)
        at io.undertow.servlet.core.ManagedServlet.createServlet(ManagedServlet.java:133)
        at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:546)
        at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:517)
        at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:42)
        at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
        at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
        at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
        at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
        at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
        at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
        at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
        at io.undertow.servlet.core.DeploymentManagerImpl.start(DeploymentManagerImpl.java:559)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:101)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:82)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
        at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private hyphen.synapse.data.dao.SynapseDao hyphen.synapse.business.service.impl.SynapseServiceImpl.synapseDao; ne
sted exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'synapseDao': Injection of autowired dependencies failed; nested exception is org.springframework.bean
s.factory.BeanCreationException: Could not autowire field: private hyphen.synapse.data.repo.SynapseRepo hyphen.synapse.data.dao.SynapseDao.synapseRepo; nested exception is org.springframework.beans.factory.B
eanCreationException: Error creating bean with name 'synapseRepo': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not an managed type: class hyphen.synapse.data.mod
el.Role
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:573)
        at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
        ... 41 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'synapseDao': Injection of autowired dependencies failed; nested exception is org.springframework.beans.facto
ry.BeanCreationException: Could not autowire field: private hyphen.synapse.data.repo.SynapseRepo hyphen.synapse.data.dao.SynapseDao.synapseRepo; nested exception is org.springframework.beans.factory.BeanCrea
tionException: Error creating bean with name 'synapseRepo': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not an managed type: class hyphen.synapse.data.model.Role
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014)
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545)
        ... 43 more
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private hyphen.synapse.data.repo.SynapseRepo hyphen.synapse.data.dao.SynapseDao.synapseRepo; nested exception is
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'synapseRepo': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not an managed
type: class hyphen.synapse.data.model.Role
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:573)
        at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
        ... 54 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'synapseRepo': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not
an managed type: class hyphen.synapse.data.model.Role
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014)
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545)
        ... 56 more
Caused by: java.lang.IllegalArgumentException: Not an managed type: class hyphen.synapse.data.model.Role
        at org.hibernate.jpa.internal.metamodel.MetamodelImpl.managedType(MetamodelImpl.java:219)
        at org.springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.<init>(JpaMetamodelEntityInformation.java:68)
        at org.springframework.data.jpa.repository.support.JpaEntityInformationSupport.getEntityInformation(JpaEntityInformationSupport.java:67)
        at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getEntityInformation(JpaRepositoryFactory.java:152)
        at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:99)
        at org.springframework.data.jpa.repository.support.JpaRepositoryFactory.getTargetRepository(JpaRepositoryFactory.java:81)
        at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:185)
        at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:251)
        at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:237)
        at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:92)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
        ... 66 more

2017-02-16 22:38:19,666 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 218) MSC000001: Failed to start service jboss.undertow.deployment.default-server.default-host./masterdatamanager: org.
jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./masterdatamanager: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 's
ynapseServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private hyphen.synapse.data.dao.SynapseD
ao hyphen.synapse.business.service.impl.SynapseServiceImpl.synapseDao; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'synapseDao': Injection of au
towired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private hyphen.synapse.data.repo.SynapseRepo hyphen.synapse.data.dao.Synaps
eDao.synapseRepo; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'synapseRepo': Invocation of init method failed; nested exception is java.lang.Ill
egalArgumentException: Not an managed type: class hyphen.synapse.data.model.Role
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:85)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
        at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'synapseServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.bea
ns.factory.BeanCreationException: Could not autowire field: private hyphen.synapse.data.dao.SynapseDao hyphen.synapse.business.service.impl.SynapseServiceImpl.synapseDao; nested exception is org.springframew
ork.beans.factory.BeanCreationException: Error creating bean with name 'synapseDao': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: C
ould not autowire field: private hyphen.synapse.data.repo.SynapseRepo hyphen.synapse.data.dao.SynapseDao.synapseRepo; nested exception is org.springframework.beans.factory.BeanCreationException: Error creati
ng bean with name 'synapseRepo': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not an managed type: class hyphen.synapse.data.model.Role
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:838)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537)
        at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:667)
        at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:633)
        at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:681)
        at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:552)
        at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:493)
        at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
        at javax.servlet.GenericServlet.init(GenericServlet.java:244)
        at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:117)
        at org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init(RunAsLifecycleInterceptor.java:78)
        at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:103)
        at io.undertow.servlet.core.ManagedServlet$DefaultInstanceStrategy.start(ManagedServlet.java:250)
        at io.undertow.servlet.core.ManagedServlet.createServlet(ManagedServlet.java:133)
        at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:546)
        at io.undertow.servlet.core.DeploymentManagerImpl$2.call(DeploymentManagerImpl.java:517)
        at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:42)
        at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
        at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
        at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
        at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
        at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
        at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
        at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44)
        at io.undertow.servlet.core.DeploymentManagerImpl.start(DeploymentManagerImpl.java:559)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:101)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:82)
        ... 6 more
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private hyphen.synapse.data.dao.SynapseDao hyphen.synapse.business.service.impl.SynapseServiceImpl.synapseDao; ne
sted exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'synapseDao': Injection of autowired dependencies failed; nested exception is org.springframework.bean
s.factory.BeanCreationException: Could not autowire field: private hyphen.synapse.data.repo.SynapseRepo hyphen.synapse.data.dao.SynapseDao.synapseRepo; nested exception is org.springframework.beans.factory.B
eanCreationException: Error creating bean with name 'synapseRepo': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not an managed type: class hyphen.synapse.data.mod
el.Role

【问题讨论】:

  • 如果在 SynapseRepo 接口中添加@Repository 会怎样?
  • 试过了,结果一样。它实际上不是必需的,因为它扩展了一个扩展 Repository 的接口,因此继承了它。

标签: spring spring-data spring-data-jpa


【解决方案1】:

您的SynapseRepoCommandRepo 接口应该有@Repository 注释。

但是问题的根源在于您的 WAR 文件中有一个 JPA 配置,而您的 JAR 中有一个 JPA 配置。因为名称、属性文件等会导致 bean 相互覆盖。您将需要花时间使它们独一无二。您可以按照https://stackoverflow.com/a/19976132/724835的说明进行操作

【讨论】:

  • 感谢您的回复。您能否详细说明第 1 点,我不确定您的意思。关于第 2 点,我已经尝试过了,但结果相同,尽管它不是必需的,因为它是通过扩展 CrudRepository 继承的。
  • 更仔细地查看错误我更新了我的答案。
  • 感谢 JustinKSU,我已尝试过您的建议,但错误仍然存​​在。我还从角色类声明中删除了“扩展 SynapseBaseEntity”。 SynapseBaseEntity 是一个实现 Serializable 的空类,但我还是把它删除了。唯一引用类 Role 的地方是 SynapseRepo: public interface SynapseRepo extends CrudRepository { } 再考虑
  • 当我直接将它部署为 WAR 时,这个确切的 JAR 代码库可以工作。我很高兴我的代码库可供审查。我可以在此处以 zip 格式上传吗?
  • 我不确定是什么问题。它看起来是正确的。如果你可以在 GitHub 上分享代码,我可以看得更深。
猜你喜欢
  • 1970-01-01
  • 2020-12-05
  • 2011-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-07
相关资源
最近更新 更多