部署期间发生Spring依赖关系注入问题 [英] Spring dependency injection issue during deployment

查看:287
本文介绍了部署期间发生Spring依赖关系注入问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我开始了一个Primefaces / Spring / Hibernate项目,我仍然在学习如何正确处理这些组件。但是在这个恰当的时刻,我正面临着一个与弹簧依赖注入相关的问题,这让我感到困惑。我一直在网上查找两天的答案,无法找到我的代码有什么问题。我已经尝试了两种自动装配方法(@Autowire ans @Inject)。有人可以看看我的代码并检查发生了什么问题吗?我的代码如下。



这是部署过程中的错误日志:

  21:29 :14419 INFO [org.springframework.web.context.support.XmlWebApplicationContext]类型的豆的entityManagerFactory [类org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean]是不符合所有BeanPostProcessor的得到处理方式(例如:不符合自动代理)
21:29:14441 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory]预实例单身在org.springframework.beans.factory.support.DefaultListableBeanFactory@68a0d2d2:定义豆[有机.springframework.web.servlet.resource.DefaultServletHttpRequestHandler#0,org.springframework.web.servlet.handler.SimpleUrlHandlerMapping#0,org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter ,org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,org.springframework.context.annotation.inte rnalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,mvcContentNegotiationManager,org.springframework.web。 servlet.mvc.method.annotation.RequestMappingHandlerMapping#0,org.springframework.format.support.FormattingConversionServiceFactoryBean#0,org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0,org.springframework.web.servlet.mvc.method.annotation。 RequestMappingHandlerAdapter#0,org.springframework.web.servlet.handler.MappedInterceptor#0,org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver#0,#org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver 0,org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver#0,PES soaBean,pessoaServiceImpl,pessoaDAOImpl,org.springframework.web.servlet.view.InternalResourceViewResolver#0,数据源,的entityManagerFactory,transactionManager的,org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor#0,#org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor 0,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,org.springframework。 context.annotation.ConfigurationClassPostProcessor.importAwareProcessor];工厂层级
的根21:29:14504 INFO [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping]映射的URL路径[/ **]到处理程序org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler# 0'
21:29:14,716 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory]销毁org.springframework.beans.factory.support.DefaultListableBeanFactory@68a0d2d2中的单例:定义bean [org.springframework.web .servlet.resource.DefaultServletHttpRequestHandler#0,org.springframework.web.servlet.handler.SimpleUrlHandlerMapping#0,org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,org.springframework .web.servlet.mvc.SimpleControllerHandlerAdapter,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnno tationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,mvcContentNegotiationManager,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0,org.springframework.format.support。 FormattingConversionServiceFactoryBean#0,org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#0,org.springframework.web.servlet.handler.MappedInterceptor#0,组织。 springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver#0,org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver#0,org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver#0,pessoaBean, pessoaServiceImpl,pessoaDAOImpl,org.springframework.web.servlet.view.InternalResourceViewResolver#0,数据源,entityManagerFactory的,transactionManager的,org.springfra mework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor#0,org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework。 transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor];工厂层次结构的根
21:29:14,739 INFO [org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean]关闭持久化单元的'JPA EntityManagerFactory'CentralSisatPersistenceUnit'
21:29:14,741错误[org.springframework.web .context.ContextLoader]上下文初始化失败:org.springframework.beans.factory.BeanCreationException:创建名为'pessoaServiceImpl'的bean时出错:注入自动装配依赖失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装入字段:private br.com.centralemprestimos.sisat.persistence.PessoaDAO br.com.centralemprestimos.sisat.service.PessoaServiceImpl.pessoaDAO;嵌套的异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到符合条件的[br.com.centralemprestimos.sisat.persistence.PessoaDAO]类型的符合条件的bean:期望至少1个符合此依赖关系的自动装配候选bean。依赖注释:{@ javax.inject.Inject()}
在org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289)[spring-beans-3.2.7.RELEASE.jar :3.2.7.RELEASE]
。在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1146)[弹簧豆-3.2.7.RELEASE.jar:3.2.7.RELEASE ]
。在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)[弹簧豆-3.2.7.RELEASE.jar:3.2.7.RELEASE]
。在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)[spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans。 factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:296)[spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.s pringframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)[spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory。 support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293)[spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean( AbstractBeanFactory.java:194)[弹簧豆-3.2.7.RELEASE.jar:3.2.7.RELEASE]在org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons
(DefaultListableBeanFactory.java:628) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
在org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)[spring-context-3.2.7 .RELEASE.jar:3.2.7.RELEASE]
在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)[spring-context-3.2.7.RELEASE.ja r:3.2.7.RELEASE]
在org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410)[spring-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)[spring-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework .web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)[spring-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.apache.catalina.core.StandardContext.contextListenerStart (StandardContext.java:3392)[jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3850)[jbossweb-7.0.13.Final .jar:]
at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90)[jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.msc.service.ServiceControllerImpl $ StartTask.startService(ServiceControllerImpl.java:1811)
at org.jboss.msc.service.S erviceControllerImpl $ StartTask.run(ServiceControllerImpl.java:1746)
在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[rt.jar:1.7.0_21]
在java.util .concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)[rt.jar:1.7.0_21]
at java.lang.Thread.run(Thread.java:722)[rt.jar:1.7。 org.springframework.beans.factory.BeanCreationException:0_21]
。通过致无法自动装配领域:私人br.com.centralemprestimos.sisat.persistence.PessoaDAO br.com.centralemprestimos.sisat.service.PessoaServiceImpl.pessoaDAO;嵌套的异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到符合条件的[br.com.centralemprestimos.sisat.persistence.PessoaDAO]类型的符合条件的bean:期望至少1个符合此依赖关系的自动装配候选bean。依赖注释:{@ javax.inject.Inject()}
在org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:517)[spring-beans-3.2.7.RELEASE .jar:3.2.7.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)[spring-beans-3.2.7.RELEASE.jar:3.2.7 .RELEASE]
在org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286)[spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
... 21 more
导致:org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到符合条件的[br.com.centralemprestimos.sisat.persistence.PessoaDAO]类型的符合条件的bean:期望至少有1个bean这符合这种依赖关系的自动导向候选资格。依赖注释:{@ javax.inject.Inject()}
在org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:988)[spring-beans-3.2.7.RELEASE.jar :3.2.7.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:858)[spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE ]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:770)[spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:489)[spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
... 23 more

21:29:14,771错误[org.apache.catalina.core.ContainerBase。[jboss.web]。[default-host]。[/ Central]]将上下文初始化事件发送给侦听器org.springframework.web.context.ContextLoaderListener类的实例:org.springframework.beans.factory.BeanCreationException:创建名为'pessoaServiceImpl'的bean时出错:注入自动装配依赖失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:无法自动装入字段:private br.com.centralemprestimos.sisat.persistence.PessoaDAO br.com.centralemprestimos.sisat.service.PessoaServiceImpl.pessoaDAO;嵌套的异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到符合条件的[br.com.centralemprestimos.sisat.persistence.PessoaDAO]类型的符合条件的bean:期望至少1个符合此依赖关系的自动装配候选bean。依赖注释:{@ javax.inject.Inject()}
在org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289)[spring-beans-3.2.7.RELEASE.jar :3.2.7.RELEASE]
。在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1146)[弹簧豆-3.2.7.RELEASE.jar:3.2.7.RELEASE ]
。在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)[弹簧豆-3.2.7.RELEASE.jar:3.2.7.RELEASE]
。在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)[spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans。 factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:296)[spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.s pringframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)[spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory。 support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293)[spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean( AbstractBeanFactory.java:194)[弹簧豆-3.2.7.RELEASE.jar:3.2.7.RELEASE]在org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons
(DefaultListableBeanFactory.java:628) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
在org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)[spring-context-3.2.7 .RELEASE.jar:3.2.7.RELEASE]
在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)[spring-context-3.2.7.RELEASE.ja r:3.2.7.RELEASE]
在org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410)[spring-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)[spring-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework .web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)[spring-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.apache.catalina.core.StandardContext.contextListenerStart (StandardContext.java:3392)[jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3850)[jbossweb-7.0.13.Final .jar:]
at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90)[jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.msc.service.ServiceControllerImpl $ StartTask.startService(ServiceControllerImpl.java:1811)
at org.jboss.msc.service.S erviceControllerImpl $ StartTask.run(ServiceControllerImpl.java:1746)
在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[rt.jar:1.7.0_21]
在java.util .concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)[rt.jar:1.7.0_21]
at java.lang.Thread.run(Thread.java:722)[rt.jar:1.7。 org.springframework.beans.factory.BeanCreationException:0_21]
。通过致无法自动装配领域:私人br.com.centralemprestimos.sisat.persistence.PessoaDAO br.com.centralemprestimos.sisat.service.PessoaServiceImpl.pessoaDAO;嵌套的异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到符合条件的[br.com.centralemprestimos.sisat.persistence.PessoaDAO]类型的符合条件的bean:期望至少1个符合此依赖关系的自动装配候选bean。依赖注释:{@ javax.inject.Inject()}
在org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:517)[spring-beans-3.2.7.RELEASE .jar:3.2.7.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)[spring-beans-3.2.7.RELEASE.jar:3.2.7 .RELEASE]
在org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286)[spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
... 21 more
导致:org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到符合条件的[br.com.centralemprestimos.sisat.persistence.PessoaDAO]类型的符合条件的bean:期望至少有1个bean这符合这种依赖关系的自动导向候选资格。依赖注解:{@ javax.inject.Inject()}
。在org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:988)[弹簧豆-3.2.7.RELEASE.jar :3.2.7.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:858)[spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE ]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:770)[spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at ...

web.xml

 <显示-名称>&中央LT; /显示名称> 
< welcome-file-list>
< welcome-file> index.xhtml< / welcome-file>
< / welcome-file-list>

< context-param>
< param-name> contextConfigLocation< / param-name>
< param-value> /WEB-INF/applicationContext.xml< / param-value>
< / context-param>

< listener>
< listener-class> org.springframework.web.context.ContextLoaderListener< / listener-class>
< / listener>
< listener>
< listener-class> org.springframework.web.context.request.RequestContextListener< / listener-class>
< / listener>
< context-param>
< param-name> primefaces.UPLOADER< / param-name>
<参数值>自动< /参数值>
< / context-param>
< filter>
< filter-name> PrimeFaces FileUpload过滤器< /过滤器名称>
< filter-class> org.primefaces.webapp.filter.FileUploadFilter< / filter-class>
< init-param>
< param-name> uploadDirectory< / param-name>
< param-value> c:/ primefaces /< / param-value>
< / init-param>
< / filter>
< filter-mapping>
< filter-name> PrimeFaces FileUpload过滤器< /过滤器名称>
< servlet-name> Faces Servlet< / servlet-name>
< / filter-mapping>

< servlet>
< servlet-name> Faces Servlet< / servlet-name>
< servlet-class> javax.faces.webapp.FacesServlet< / servlet-class>
1< / load-on-startup>
< / servlet>
< servlet-mapping>
< servlet-name> Faces Servlet< / servlet-name>
< url-pattern> *。xhtml< / url-pattern>
< / servlet-mapping>

< / web-app>

applicationContext.xml

 <?xml version =1.0encoding =UTF-8?> 

< beans xmlns =http://www.springframework.org/schema/beans
xmlns:xsi =http://www.w3.org/2001/XMLSchema -instance
xmlns:tx =http://www.springframework.org/schema/tx
xmlns:aop =http://www.springframework.org/schema/aop
xmlns:p =http://www.springframework.org/schema/p
xmlns:mvc =http://www.springframework.org/schema/mvc
xmlns :context =http://www.springframework.org/schema/context
xsi:schemaLocation =http://www.springframework.org/schema/beans
http:// www。 springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/ spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http:// www。 springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd\">

< mvc:default-servlet-handler />
< context:annotation-config />
< mvc:annotation-driven />

< context:component-scan base-package =br.com.centralemprestimos.sisat.mbean,
br.com.centralemprestimos.sisat.service,
br。 com.mobinn.fmwk.persistence,
br.com.centralemprestimos.sisat.persistence,
br.com.centralemprestimos.sisat.service,
br.com.mobinn.fmwk.service />

< bean class =org.springframework.web.servlet.view.InternalResourceViewResolver>
< property name =prefixvalue =。jsp/>
< / bean>


<! - 数据源声明 - >
< bean id =dataSourceclass =org.springframework.jdbc.datasource.DriverManagerDataSource>
< property name =driverClassNamevalue =com.mysql.jdbc.Driver/>
< property name =urlvalue =jdbc:mysql:// localhost:3306 / central/>
< property name =usernamevalue =root/>
< property name =passwordvalue =root/>
< / bean>


<! - 实体经理工厂声明 - >
< bean id =entityManagerFactoryclass =org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean>
< property name =dataSourceref =dataSource/>
< property name =persistenceUnitNamevalue =CentralSisatPersistenceUnit/>
< property name =persistenceXmlLocationvalue =classpath:META-INF / persistence.xml/>
< property name =packagesToScan>
< list>
<值> br.com.mobinn.fmwk.persistence< /值>
<值> br.com.centralemprestimos.sisat.entity< /值>
<值> br.com.centralemprestimos.sisat.persistence< /值>
< / list>
< / property>
< property name =jpaVendorAdapter>
< bean class =org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter>
< property name =databasevalue =MYSQL/>
< / bean>
< / property>
< / bean>

< bean id =transactionManagerclass =org.springframework.orm.jpa.JpaTransactionManager>
< property name =entityManagerFactoryref =entityManagerFactory/>
< property name =dataSourceref =dataSource/>
< / bean>

< bean class =org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor/>
< bean class =org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor/>

< tx:注解驱动的事务管理器=事务管理器proxy-target-class =false/>

< / beans>

persistence.xml

 <?xml version =1.0encoding =UTF-8?> 
< persistence version =2.0xmlns =http://java.sun.com/xml/ns/persistencexmlns:xsi =http://www.w3.org/2001/XMLSchema-实例xsi:schemaLocation =http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd\">
< persistence-unit name =CentralSisatPersistenceUnit>

< class> br.com.centralemprestimos.sisat.entity.Telefone< / class>
< class> br.com.centralemprestimos.sisat.entity.Pessoa< / class>

<属性>
< property name =eclipselink.target-databasevalue =MySQL/>
< property name =javax.persistence.jdbc.drivervalue =com.mysql.jdbc.Driver/>

< property name =hibernate.dialectvalue =org.hibernate.dialect.MySQLDialect/>
< property name =hibernate.max_fetch_depthvalue =3/>
< property name =hibernate.transaction.jta.platformvalue =org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform/>
< property name =hibernate.generate_statisticsvalue =true/>
< property name =show_sqlvalue =true/>
< property name =hibernate.show_sqlvalue =false/>
< property name =hibernate.format_sqlvalue =false/>
< property name =eclipselink.logging.levelvalue =DEBUG/>
< / properties>
< / persistence-unit>

< /持久性>

PessoaDAOImpl.java

 包br.com.centralemprestimos.sisat.persistence; 

导入javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.springframework.stereotype.Repository;

导入br.com.centralemprestimos.sisat.entity.Pessoa;
导入br.com.mobinn.fmwk.persistence.GenericDAOImpl;
$ b $ @Repository
public class PessoaDAOImpl extends GenericDAOImpl< Pessoa> {

@PersistenceContext(name =CentralSisatPersistenceUnit)
受保护的EntityManager entityManager;

public void doSomething(){
System.out.println(Bean正确注入!);
}

}

PessoaBean.java

 包br.com.centralemprestimos.sisat.mbean; 

import java.io.Serializable; ...

import javax.inject.Inject;

导入org.jboss.logging.Logger;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

导入br.com.centralemprestimos.sisat.entity.Pessoa;
import br.com.centralemprestimos.sisat.entity.Telefone;
导入br.com.centralemprestimos.sisat.service.PessoaService;
导入br.com.centralemprestimos.sisat.util.FacesUIHelper;
import br.com.mobinn.fmwk.exception.BusinessException;

@Component
@Scope(request)
public class PessoaBean实现Serializable {

private static final long serialVersionUID = 1L;
public Logger logger = Logger.getLogger(br.com.centralemprestimos.sisat.mbean.PessoaBean);

@Inject
private PessoaService pessoaService;

PessoaServiceImpl.java

 包br.com.centralemprestimos.sisat.service; 

import java.io.Serializable;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
进口br.com.centralemprestimos.sisat.entity.Pessoa;
导入br.com.centralemprestimos.sisat.persistence.PessoaDAO;
导入br.com.mobinn.fmwk.service.GenericServiceImpl;

@Service
public class PessoaServiceImpl extends GenericServiceImpl< Pessoa>实现Serializable,PessoaService {

@Inject
private PessoaDAO pessoaDAO;

public PessoaDAO getPessoaDAO(){
return pessoaDAO;
}

public void setPessoaDAO(PessoaDAO pessoaDAO){
this.pessoaDAO = pessoaDAO;
}

}

在此先感谢。

解决方案

Spring试图在 PessoaDAO > PessoaServiceImpl class(默认情况下是通过类型完成的),但是没有该类型的bean。



你可以在stacktrace:

  org.springframework.beans.factory.NoSuchBeanDefinitionException:没有合格的bean类型[br.com.centralemprestimos.sis。 persistence.PessoaDAO] 

我假设 PessoaDAO 是一个接口,你的意思是 PessoaDAOImpl 来实现它。如果你让这个类实现接口,Spring应该通过类型自动装载Bean。

  @Repository 
public class PessoaDAOImpl扩展了GenericDAOImpl< Pessoa>实现PessoaDAO {

}


I'm starting a Primefaces/Spring/Hibernate project and I'm still learning how to handle those components properly. But at this right moment, I'm facing a problem related to spring dependency injection that is freaking me out. I've been look for an answer for two days over the web and couldn't find what is wrong with my code. I've tried both approaches to autowire (@Autowire ans @Inject). Could someone take a look at my code and check what's going wrong ? My code is below.

Here is the error log during deployment:

21:29:14,419 INFO  [org.springframework.web.context.support.XmlWebApplicationContext] Bean 'entityManagerFactory' of type [class org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
21:29:14,441 INFO  [org.springframework.beans.factory.support.DefaultListableBeanFactory] Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@68a0d2d2: defining beans [org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler#0,org.springframework.web.servlet.handler.SimpleUrlHandlerMapping#0,org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,mvcContentNegotiationManager,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0,org.springframework.format.support.FormattingConversionServiceFactoryBean#0,org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#0,org.springframework.web.servlet.handler.MappedInterceptor#0,org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver#0,org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver#0,org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver#0,pessoaBean,pessoaServiceImpl,pessoaDAOImpl,org.springframework.web.servlet.view.InternalResourceViewResolver#0,dataSource,entityManagerFactory,transactionManager,org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor#0,org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor]; root of factory hierarchy
21:29:14,504 INFO  [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] Mapped URL path [/**] onto handler 'org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler#0'
21:29:14,716 INFO  [org.springframework.beans.factory.support.DefaultListableBeanFactory] Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@68a0d2d2: defining beans [org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler#0,org.springframework.web.servlet.handler.SimpleUrlHandlerMapping#0,org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,mvcContentNegotiationManager,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping#0,org.springframework.format.support.FormattingConversionServiceFactoryBean#0,org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter#0,org.springframework.web.servlet.handler.MappedInterceptor#0,org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver#0,org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver#0,org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver#0,pessoaBean,pessoaServiceImpl,pessoaDAOImpl,org.springframework.web.servlet.view.InternalResourceViewResolver#0,dataSource,entityManagerFactory,transactionManager,org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor#0,org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor]; root of factory hierarchy
21:29:14,739 INFO  [org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean] Closing JPA EntityManagerFactory for persistence unit 'CentralSisatPersistenceUnit'
21:29:14,741 ERROR [org.springframework.web.context.ContextLoader] Context initialization failed: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pessoaServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private br.com.centralemprestimos.sisat.persistence.PessoaDAO br.com.centralemprestimos.sisat.service.PessoaServiceImpl.pessoaDAO; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [br.com.centralemprestimos.sisat.persistence.PessoaDAO] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.inject.Inject()}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1146) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) [spring-context-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) [spring-context-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410) [spring-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) [spring-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) [spring-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3392) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3850) [jbossweb-7.0.13.Final.jar:]
at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_21]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_21]
at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_21]
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private br.com.centralemprestimos.sisat.persistence.PessoaDAO br.com.centralemprestimos.sisat.service.PessoaServiceImpl.pessoaDAO; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [br.com.centralemprestimos.sisat.persistence.PessoaDAO] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.inject.Inject()}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:517) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
... 21 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [br.com.centralemprestimos.sisat.persistence.PessoaDAO] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.inject.Inject()}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:988) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:858) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:770) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:489) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
... 23 more

21:29:14,771 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/Central]] Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pessoaServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private br.com.centralemprestimos.sisat.persistence.PessoaDAO br.com.centralemprestimos.sisat.service.PessoaServiceImpl.pessoaDAO; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [br.com.centralemprestimos.sisat.persistence.PessoaDAO] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.inject.Inject()}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1146) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) [spring-context-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) [spring-context-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410) [spring-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) [spring-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112) [spring-web-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3392) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3850) [jbossweb-7.0.13.Final.jar:]
at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_21]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_21]
at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_21]
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private br.com.centralemprestimos.sisat.persistence.PessoaDAO br.com.centralemprestimos.sisat.service.PessoaServiceImpl.pessoaDAO; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [br.com.centralemprestimos.sisat.persistence.PessoaDAO] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.inject.Inject()}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:517) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
... 21 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [br.com.centralemprestimos.sisat.persistence.PessoaDAO] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.inject.Inject()}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:988) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:858) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:770) [spring-beans-3.2.7.RELEASE.jar:3.2.7.RELEASE]
at ...

web.xml

<display-name>Central</display-name>
<welcome-file-list>
    <welcome-file>index.xhtml</welcome-file>
</welcome-file-list>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<context-param>
    <param-name>primefaces.UPLOADER</param-name>
    <param-value>auto</param-value>
</context-param>
<filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
    <init-param>
        <param-name>uploadDirectory</param-name>
        <param-value>c:/primefaces/</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>

<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>

</web-app>

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans  xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                                http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-3.0.xsd
                        http://www.springframework.org/schema/tx
                        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
                        http://www.springframework.org/schema/mvc 
                        http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">

<mvc:default-servlet-handler/>                          
<context:annotation-config/>
<mvc:annotation-driven />

<context:component-scan base-package="  br.com.centralemprestimos.sisat.mbean,
                                        br.com.centralemprestimos.sisat.service,
                                        br.com.mobinn.fmwk.persistence,
                                        br.com.centralemprestimos.sisat.persistence,
                                        br.com.centralemprestimos.sisat.service,
                                        br.com.mobinn.fmwk.service"/>

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value=".jsp" />
</bean>


<!-- Data Source Declaration -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/central" />
    <property name="username" value="root" />
    <property name="password" value="root" />
</bean>


<!-- Entity Manager Factory Declaration -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="persistenceUnitName" value="CentralSisatPersistenceUnit" />
    <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" /> 
    <property name="packagesToScan">
        <list>
            <value>br.com.mobinn.fmwk.persistence</value>
            <value>br.com.centralemprestimos.sisat.entity</value>
            <value>br.com.centralemprestimos.sisat.persistence</value>
        </list>
    </property>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="database" value="MYSQL" />
        </bean>
    </property>
 </bean>    

 <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
    <property name="dataSource" ref="dataSource"/>
 </bean>

 <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
 <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>

 <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="false"/>

</beans>

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="CentralSisatPersistenceUnit">

    <class>br.com.centralemprestimos.sisat.entity.Telefone</class>
    <class>br.com.centralemprestimos.sisat.entity.Pessoa</class>

    <properties>
        <property name="eclipselink.target-database" value="MySQL"/>
        <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>

        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
        <property name="hibernate.max_fetch_depth" value="3"/>
        <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />
        <property name="hibernate.generate_statistics" value="true"/>
        <property name="show_sql" value="true"/>
        <property name="hibernate.show_sql" value="false"/>  
        <property name="hibernate.format_sql" value="false"/>
        <property name="eclipselink.logging.level" value="DEBUG"/>
    </properties>
</persistence-unit>

</persistence>

PessoaDAOImpl.java

package br.com.centralemprestimos.sisat.persistence;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.springframework.stereotype.Repository;

import br.com.centralemprestimos.sisat.entity.Pessoa;
import br.com.mobinn.fmwk.persistence.GenericDAOImpl;

@Repository
public class PessoaDAOImpl extends GenericDAOImpl<Pessoa>{

@PersistenceContext(name="CentralSisatPersistenceUnit")
protected EntityManager entityManager;

public void doSomething() {
    System.out.println("Bean was correctly injected!");
}

}

PessoaBean.java

package br.com.centralemprestimos.sisat.mbean;

import java.io.Serializable; ...

import javax.inject.Inject;

import org.jboss.logging.Logger;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import br.com.centralemprestimos.sisat.entity.Pessoa;
import br.com.centralemprestimos.sisat.entity.Telefone;
import br.com.centralemprestimos.sisat.service.PessoaService;
import br.com.centralemprestimos.sisat.util.FacesUIHelper;
import br.com.mobinn.fmwk.exception.BusinessException;

@Component
@Scope("request")
public class PessoaBean implements Serializable {

private static final long serialVersionUID = 1L;
public Logger logger =             Logger.getLogger("br.com.centralemprestimos.sisat.mbean.PessoaBean");

@Inject
private PessoaService pessoaService;

PessoaServiceImpl.java

package br.com.centralemprestimos.sisat.service;

import java.io.Serializable;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
import br.com.centralemprestimos.sisat.entity.Pessoa;
import br.com.centralemprestimos.sisat.persistence.PessoaDAO;
import br.com.mobinn.fmwk.service.GenericServiceImpl;

@Service
public class PessoaServiceImpl extends GenericServiceImpl<Pessoa> implements Serializable, PessoaService {

@Inject
private PessoaDAO pessoaDAO;

public PessoaDAO getPessoaDAO() {
    return pessoaDAO;
}

public void setPessoaDAO(PessoaDAO pessoaDAO) {
    this.pessoaDAO = pessoaDAO;
}

}

Thanks in advance.

解决方案

Spring is attempting to autowire the PessoaDAO bean in the PessoaServiceImpl class (which by default is done by type), however there are no beans of that type.

You can see this in the stacktrace:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [br.com.centralemprestimos.sisat.persistence.PessoaDAO] 

I assume that PessoaDAO is an interface and you meant PessoaDAOImpl to implement it. If you make this class implement the interface, Spring should autowire the bean by the type.

@Repository
public class PessoaDAOImpl extends GenericDAOImpl<Pessoa> implements PessoaDAO{

}

这篇关于部署期间发生Spring依赖关系注入问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆