2013-03-29 13 views
5

के लिए कोई प्रकार का मिलान बीन [org.hibernate.SessionFactory] पाया गया है मैं वसंत एमवीसी में एक नौसिखिया हूं। मुझे एक समस्या का सामना करना पड़ता है "निर्भरता के लिए पाए गए प्रकार [org.hibernate.SessionFactory] का कोई मिलान करने वाला बीन: कम से कम 1 बीन की उम्मीद है जो इस निर्भरता के लिए ऑटोवायर उम्मीदवार के रूप में अर्हता प्राप्त करता है।" और बहुत समय व्यतीत करें।निर्भरता

मैंने मैवेन बिल्ड प्रबंधन का उपयोग किया। मेरे प्रोजेक्ट में एक प्रोजेक्ट है जिसमें 2 मॉड्यूल शामिल हैं: स्प्रिंगकोर (जार) और स्प्रिंगएमवीसी (वेब ​​ऐप)। और springmvc (वेब ​​ऐप) निर्भरता वसंत कोर रहा है। मॉड्यूल वसंत कोर में, मैं इस तरह के डोम, दाव, सेवा और उनके कार्यान्वयन के रूप में सभी पैकेज में परिभाषित किया और मैं भी निम्न src/मुख्य/संसाधनों में applicationContext.xml परिभाषित:

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:context="http://www.springframework.org/schema/context" 
     xmlns:tx="http://www.springframework.org/schema/tx" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans-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/context 
      http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

    <!-- Activates scanning of @Autowired --> 
    <context:annotation-config /> 

    <context:component-scan base-package="com.netvn" /> 

    <bean id="propertyConfigurer" 
     class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" 
     p:location="classpath:jdbc" /> 

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
      destroy-method="close" p:driverClassName="${jdbc.driverClassName}" 
      p:url="${jdbc.databaseurl}" p:username="${jdbc.username}"     p:password="${jdbc.password}" /> 

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
      <property name="dataSource" ref="dataSource" /> 
      <property name="annotatedClasses"> 
        <list> 
         <value>com.netvn.dom.Contact</value> 
        </list> 
      </property> 
      <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
      <prop key="hibernate.max_fetch_depth">3</prop> 
      <prop key="hibernate.jdbc.fetch_size">50</prop> 
      <prop key="hibernate.jdbc.batch_size">10</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.hbm2ddl.auto">update</prop> 
     </props> 
    </property> 
    </bean> 

    <tx:annotation-driven transaction-manager="transactionManager" /> 
    <bean id="transactionManager" 
      class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="sessionFactory" /> 
    </bean> 
</beans> 

ContactDaoImpl। जावा

@Repository 
public class ContactDaoImpl implements ContactDao { 
    private Log log = LogFactory.getLog(ContactDaoImpl.class); 

    @Autowired 
    private SessionFactory sessionFactory; 

    public List<Contact> listContact() { 
     Session session = sessionFactory.getCurrentSession(); 
     Query q = session.createQuery("select g from Contact g order by id desc"); 
     List<Contact> contactList= q.list(); 
     return contactList; 
    } 
} 

ContactServiceImpl.java

@Service 
@Transactional 
public class ContactServiceImpl implements ContactService { 

    @Autowired 
    private ContactDao contactDao; 

    @Transactional(propagation=Propagation.REQUIRED) 
    public List<Contact> listContact(){ 
     return contactDao.listContact(); 
    } 
} 

में springmvc (वेब ​​एप्लिकेशन), मैं परिभाषित web.xml और डिस्पैचर-servlet.xml

डिस्पैचर-servlet.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: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/mvc 
       http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 
    <context:annotation-config /> 

    <mvc:annotation-driven /> 
    <context:component-scan base-package="com.netvn.dao" /> 
    <context:component-scan base-package="com.netvn.service" /> 
    <context:component-scan base-package="com.netvn.controller" /> 

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
      p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" /> 

</beans> 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
version="3.0"> 
    <context-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value> 
       classpath*:*.xml 
      </param-value> 
    </context-param> 
    <servlet> 
      <servlet-name>dispatcher</servlet-name> 
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
      <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
      <servlet-name>dispatcher</servlet-name> 
      <url-pattern>/</url-pattern> 
    </servlet-mapping> 

    <listener> 
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
</web-app> 

यहाँ जब मैं कोशिश मेरी समस्या है बिलाव 6.0 सर्वर में इसे चलाने के लिए

Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.hibernate.SessionFactory com.netvn.dao.impl.ContactDaoImpl.sessionFactory; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching 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.Autowired(required=true)} 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:502) 
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:282) 
    ... 86 more 
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching 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.Autowired(required=true)} 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:920) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:789) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703) 
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:474) 

कोई मुझे बता सकते हैं, क्या फिर से है Ason सत्र फैक्टरी वेब अनुप्रयोग संदर्भ या किसी भी समस्या द्वारा बनाया नहीं जा सकता जब मैंने सत्र कारखाना कॉन्फ़िगर किया।

किसी भी सहायक की सराहना की जाएगी।

+0

हाइबरनेट संस्करण का उपयोग किया –

+0

आप पुष्टि कर सकते हैं applicationContext.xml फ़ाइल classpath में कॉपी किया गया है या नहीं में सेटअप नहीं हैं और यह –

+0

मैं वसंत संस्करण इस्तेमाल किया 3.0.5 रिहाई और भरी हुई है hibernate- मेरी परियोजना के लिए core-3.3.2.GA निर्भरता। मेरी परियोजना की निर्भरताओं के साथ कोई समस्या है? –

उत्तर

0

नीचे दिए गए प्रेषक-servlet.xml (जिसे clealy सही ढंग से लोड किया जा रहा है) में सीधे आवेदन संदर्भ आयात करने का प्रयास करें।

<import resource="classpath:WEB-INF/applicationContext.xml" />

0

आपका sessionfactory सही तरीके से प्रारंभ हो रही है नहीं है।

अपनी त्रुटि कहां और क्या फेंक दिया जा रहा है पढ़ें। निजी org.hibernate.SessionFactory

आप SessionFactory सही तरीके से प्रारंभ

अब परीक्षण करने के लिए कैसे यह बहुत सरल है की आवश्यकता है:

नहीं कर सके autowire क्षेत्र है। सबसे पहले अपने कोड में जोड़े गए sessionfactory को हटा दें। परीक्षण करें कि डेटासोर्स सही ढंग से इनटाइलाइज्ड हो रहा है

डेटा स्रोत को ऑटोवायर के रूप में जोड़ें। @Autowired डेटासोर्स डेटा स्रोत;

आपकी विधियों में आप आसानी से डेटासोर्स.getकनेक्शन कर सकते हैं।यदि आप सादे जेडीबीसी के साथ परीक्षण करने में सक्षम हैं तो आप एक कदम करीब हैं।

यदि आपका डेटास्रोत सही तरीके से कॉन्फ़िगर हो जाता है तो आप अपने सत्रफैक्टरी को दूसरे चरण के रूप में जांच सकते हैं।

मुझे नहीं लगता कि कन्वर्ट स्कैनिंग आपको कोई समस्या दे रही है क्योंकि यह स्वचालित रूप से विफल हो रही है। तो अपने डेटा स्रोत और sessionfactory सेम सही ढंग से एक्सएमएल

संबंधित मुद्दे