2012-09-10 13 views
14

मुझे मेवेन में स्प्रिंग + स्प्रिंग डेटा जेपीए + क्वेरीडीएसएल + जेपीए 2.0 + हाइबरनेट की कॉन्फ़िगरेशन स्थापित करने में बहुत परेशानी हो रही है। मैंने पहले से ही बहुत सारी समस्याओं का समाधान किया है, लेकिन यह मुझे सिरदर्द दे रहा है = /।कक्षा सभी बीनपोस्ट प्रोसेसर द्वारा संसाधित करने के लिए योग्य नहीं है

मैं निम्नलिखित अपवाद हो रही है:

Bean 'dataSource' of type [class org.springframework.jdbc.datasource.DriverManagerDataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 

मैं गूगल में एक दृष्टि डाली तथा समय की सबसे इस समस्या एनोटेशन "@Transactional" के अभाव के कारण होता है। मैंने अपनी विधियों को एनोटेट करने की कोशिश की, लेकिन यह कुछ भी हल नहीं किया। मैं absolutelly यह जहां = (से आता है के बारे में पता नहीं है

यहाँ अपने परीक्षण के कोड है:।।

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations="/applicationContext.xml") 
public class BaseTest { 

    public BaseTest() { 
    } 

    @Before 
    public void setUp() throws IOException { 
     Dataset.loadDatabase(); 
    } 

    @Test 
    public void load(){} 
} 

वर्ग डेटासेट बस कुछ DB में बचत होती है अगर यह काम कर रहा है देखने के लिए कर

मेरे ApplicationContext.xml:

<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:jpa="http://www.springframework.org/schema/data/jpa" 
     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.1.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.1.xsd 
     http://www.springframework.org/schema/data/jpa 
     http://www.springframework.org/schema/data/jpa/spring-jpa.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"> 

     <context:annotation-config/> 
     <jpa:repositories base-package="com.ae.repository" /> 
     <context:component-scan base-package="com.ae.service" /> 

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

     <!-- JPA EntityManagerFactory --> 
     <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
      <property name="dataSource" ref="dataSource"/> 
      <property name="jpaProperties"> 
       <props> 
        <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
        <prop key="hibernate.hbm2ddl.auto">update</prop> 
        <prop key="hibernate.show_sql">true</prop> 
        <prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop> 
        <prop key="hibernate.id.new_generator_mappings">true</prop> 
       </props> 
      </property> 
     </bean> 

     <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
      <property name="entityManagerFactory" ref="entityManagerFactory"/> 
     </bean> 
     <tx:annotation-driven mode="aspectj" transaction-manager="transactionManager" /> 
     <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/> 
     <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/> 
</beans> 

मुझे यकीन है कि नहीं करता है, तो मेरी निर्भरता सही ढंग से स्थापित कर रहे हैं रहा हूँ या तो:

<dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.10</version> 
      <scope>test</scope> 
     </dependency> 

     <!-- hibernate + jpa --> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>4.1.6.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>1.6.6</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.derby</groupId> 
      <artifactId>derby</artifactId> 
      <version>10.3.2.1</version> 
      <scope>test</scope> 
     </dependency> 

     <!-- Spring JPA --> 
     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-jpa</artifactId> 
      <version>1.1.1.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.sql</groupId> 
      <artifactId>jdbc-stdext</artifactId> 
      <version>2.0</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.transaction</groupId> 
      <artifactId>jta</artifactId> 
      <version>1.1</version> 
     </dependency> 

     <!-- MySQL Connector --> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.21</version> 
     </dependency> 

     <!-- Query DSL --> 
     <dependency> 
      <groupId>com.mysema.querydsl</groupId> 
      <artifactId>querydsl-apt</artifactId> 
      <version>2.7.2</version> 
      <scope>provided</scope> 
     </dependency>  

     <dependency> 
      <groupId>com.mysema.querydsl</groupId> 
      <artifactId>querydsl-jpa</artifactId> 
      <version>2.7.2</version> 
     </dependency> 

     <!-- Spring Framework --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>3.1.2.RELEASE</version> 
     </dependency> 

     <!-- Apache commons lang --> 
     <dependency> 
      <groupId>commons-lang</groupId> 
      <artifactId>commons-lang</artifactId> 
      <version>2.6</version> 
     </dependency> 

     <!-- Apache commons IO --> 
     <dependency> 
      <groupId>commons-io</groupId> 
      <artifactId>commons-io</artifactId> 
      <version>2.4</version> 
     </dependency> 

     <!-- Other --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <version>3.1.2.RELEASE</version> 
      <scope>test</scope> 
      <type>jar</type> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aspects</artifactId> 
      <version>3.1.2.RELEASE</version> 
     </dependency> 
    </dependencies> 

पढ़ने के लिए धन्यवाद;)

+1

आप इसे * अपवाद * के रूप में प्राप्त कर रहे हैं? या आप एक लॉग संदेश के रूप में मतलब है? – Raedwald

+0

यह भी देखें कि http://stackoverflow.com/questions/1201726/tracking-down-cause-of-springs-not- योग्य-for-auto-proxying/19688634#19688634 अगर आपको "बीन संसाधित होने के योग्य नहीं है सभी BeanPostProcessors " –

उत्तर

15

यह चेतावनी कुछ भी नहीं मतलब है, आप इसके बारे में चिंता नहीं करनी चाहिए जब से तुम DataSource के लिए किसी भी पोस्ट-प्रोसेसर लागू करने की आवश्यकता नहीं है।

तकनीकी तौर पर इसका मतलब है कि कुछ सेम के बाद प्रोसेसर (एक लेन-देन संबंधी एक, मुझे लगता है), आपके DataSource पर निर्भर करता है, इसलिए DataSource पूरी तरह से है कि बाद के प्रोसेसर के प्रारंभ से पहले प्रारंभ किया जाना चाहिए ताकि बाद प्रोसेसर प्रारंभ रोकना नहीं कर सकते DataSource का।

आपको चिंता करने की ज़रूरत है यदि आपको बीन के बारे में ऐसी चेतावनी मिलती है जिसे आप पोस्ट प्रोसेसर को लागू करना चाहते हैं।

+0

उत्तर axtavt के लिए धन्यवाद! बाकी लॉग को पढ़कर मैं देखता हूं कि डेटासेट को लोड करने का प्रयास करने के बाद, किसी कारण से, डेटासेट में दी गई जानकारी का उपयोग करने के बजाय यह एक पर्सिस्टेंस यूनिट फ़ाइल (मेटा-आईएनएफ के तहत persistence.xml) खोजने की कोशिश करता है। यदि कोई persistence.xml नहीं है तो परीक्षण विफल रहता है कि कोई दृढ़ता इकाई नहीं मिली है। यदि मैं persistence.xml में डेटासेट बीन में दी गई जानकारी दोहराता हूं तो यह ठीक काम करता है, मेरा डेटाबेस सफलतापूर्वक बनाया गया है। लेकिन अब मुझे एक और समस्या है: –

+0

"नाम के साथ बीन बनाने में त्रुटि 'एल्बम ServiceImpl': स्वाभाविक निर्भरताओं का इंजेक्शन विफल रहा; नेस्टेड अपवाद org.springframework.beans.factory.BeanCreationException: क्षेत्र को स्वत: नहीं चला सका: com.ae.repository.AlbumRepository com .ae.service.impl.AlbumServiceImpl.albumRepository; नेस्टेड अपवाद org.springframework.beans.factory.BeanCreationException: नाम 'एल्बम रिपॉजिटरी' नाम से बीन बनाने में त्रुटि: फैक्ट्रीबीन ने ऑब्जेक्ट सृजन पर अपवाद फेंक दिया; नेस्टेड अपवाद java.lang.IleglegalrrumentException नहीं है: नहीं एक प्रबंधित प्रकार: कक्षा com.ae.entity.Album "। –

+0

Google का कहना है कि ऐसा तब होता है जब आपके पास एक सारणी या इंटरफ़ेस एक इकाई के रूप में होता है, लेकिन यह मेरा मामला नहीं है। बीटीडब्लू, मुझे वही अन्य त्रुटि मिलती है (सभी बीनपोस्ट प्रोसेसर द्वारा संसाधित होने के लिए योग्य नहीं) मेरे बीन EntityManagerFactory में, मैं इसे इंगित करूंगा। मैं इस "एक प्रबंधित प्रकार नहीं" समस्या से संबंधित एक और प्रश्न बनाने वाला हूं, शायद इसका "सभी बीनपोस्ट प्रोसेसर द्वारा संसाधित होने के योग्य नहीं" के साथ कुछ लेना देना नहीं है।धन्यवाद;) –

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

  • कोई संबंधित समस्या नहीं^_^