2016-04-29 46 views
0

我无法解决与其他类似帖子相关的问题。我试图在Spring Boot中使用Hibernate。其他具有这种配置的项目工作正常。这一个没有。也许你们中的一个知道如何解决这个问题。NoSuchBeanDefinitionException:找不到符合条件的[org.hibernate.SessionFactory]类型的bean依赖关系

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.hibernate.SessionFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=sessionFactory)} 

java.lang.reflect.InvocationTargetException 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:601) 
at org.springframework.boot.maven.AbstractRunMojo$LaunchRunner.run(AbstractRunMojo.java:478) 
at java.lang.Thread.run(Thread.java:722) Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'priceDaoHibernateImpl' defined in file [D:\Sonstiges\Entwicklung\Projekte\gatrinWS\target\classes\de\xxx\gatrinws\persistence\PriceDaoHibernateImpl.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.SessionFactory]: No qualifying bean of type [org.hibernate.SessionFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=sessionFactory)}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.hibernate.SessionFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=sessionFactory)} 
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749) 
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:185) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1143) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1046) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) 
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:839) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) 
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) 
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766) 
at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180) 
at de.xxx.gatrinws.Application.main(Application.java:10) 
... 6 more Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.hibernate.SessionFactory] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=sessionFactory)} 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1373) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1119) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014) 
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:813) 
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) 
... 25 more 

这是我的配置

<context:component-scan base-package="de.xxx.gatrinws"/> 

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="locations"> 
     <list> 
      <value>classpath:global.properties</value> 
     </list> 
    </property> 
    <property name="ignoreUnresolvablePlaceholders" value="true"/> 
    <property name="ignoreResourceNotFound" value="true"/> 
    <property name="placeholderPrefix" value="${"/> 
</bean> 

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> 
    <property name="driverClass" value="${jdbc.driverClassName}"/> 
    <property name="jdbcUrl" value="${jdbc.url}"/> 
    <property name="user" value="${jdbc.username}"/> 
    <property name="password" value="${jdbc.password}"/> 
    <property name="acquireIncrement" value="${c3p0.acquireIncrement}"/> 
    <property name="minPoolSize" value="${c3p0.minPoolSize}"/> 
    <property name="maxPoolSize" value="${c3p0.maxPoolSize}"/> 
</bean> 

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource"> 
     <ref local="dataSource"/> 
    </property> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
      <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
      <prop key="hibernate.format_sql">${hibernate.format_sql}</prop> 
      <prop key="hibernate.hbm2ddl.auto">validate</prop> 
      <prop key="hibernate.cache.use_second_level_cache">true</prop> 
      <prop key="hibernate.cache.use_first_level_cache">true</prop> 
      <prop key="maxwait">10000</prop> 
      <prop key="maxidle">25</prop> 
      <prop key="minidle">5</prop> 
     </props> 
    </property> 
    <property name="packagesToScan"> 
     <array> 
      <value>de.xxx.gatrinws</value> 
     </array> 
    </property> 
</bean> 

<bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory"/> 
</bean> 

<tx:annotation-driven transaction-manager="txManager"/> 

这里是我的道,其中SessionFactory的自动装配的似乎不工作: (.class文件位于:de.xxx.gatrinws .service so component scan should work,should not it?)

@Repository 
@Transactional 
public class PriceDaoHibernateImpl implements PriceDao { 

private final SessionFactory sessionFactory; 

@Autowired 
public PriceDaoHibernateImpl(@Qualifier(value = "sessionFactory") SessionFactory sessionFactory) { 
    this.sessionFactory = sessionFactory; 
} 

@Override 
public Product findProduct(String ean) { 
    return null; // to be added 
} 

}

有谁知道如何解决这个问题?服务自动装配就像一个魅力。看来sessionFactory配置有什么问题。但是:这是我为其他项目工作的方式。

在此先感谢!

(如果你想知道:我x'ed封装基板名)

编辑:

它 “似乎” 是applicationContext.xml中(Spring配置)复制到/目标/运行时,某些属性无法解析。我需要在任何可以正确解析属性的地方添加目标文件夹吗? see screenshot here

未复制的配置可以毫无问题地解决所有属性。

+0

您是否在尝试@Autowired时声明SessionFactory? –

+0

是的。已经尝试过。没有不同。 – Hoax

+0

你可以尝试将你的applicationContext.xml放在src/main/webapp/WEB-INF中吗?这应该是它的默认位置 –

回答

-3

您是否尝试过使用自动布线注释?如下所示:

@Autowired 
    private SessionFactory sessionFactory; 
+0

是的,已经尝试将其添加到成员。这两个通常应该工作,但不能解决问题:( – Hoax

+0

我没有太多的想法,但你也可以尝试@Autowired(required = false) – sudhir

+0

你可以与下面的帖子进行交叉验证:http:// stackoverflow。 COM /问题/ 25288716/RQ能 - 不自动装配,道无预选赛 - 豆的型发现换依赖?= 1 – sudhir

相关问题