Ich kann nicht autowire-repository im Frühjahr

Ich versuche autowire-repository im controller mit spring-annotation. Ich bin immer Fehler org.springframework.data.repository.query.QueryByExampleExecutor class not found für die ich nicht finden konnte eine Lösung.

Fehler, die ich immer bin:

SEVERE: 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 'articleController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.payforeign.article.ArticleRepository com.payforeign.article.ArticleController.repository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'articleRepository': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/data/repository/query/QueryByExampleExecutor

Controller

package com.payforeign.article;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/service")
public class ArticleController {

   @Autowired
   private ArticleRepository repository;

   //controller methods
}

Repository

Habe ich kommentiert repository mit @Repository. Nach Frühling Dokumentation, ich habe nur repository-Schnittstelle. Ist es richtig?

package com.payforeign.article;

import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface ArticleRepository extends CrudRepository<Article, Long> {}

applicationContext.xml

Ich habe jpa:repositories mit der richtigen base-package und component-scan. Ich habe angegeben, dass es-annotation-driven (<mvc:annotation-driven /> <tx:annotation-driven />) und fügte hinzu, JDBC und JPA-Einstellungen. Meine applicationContext.xml wird korrekt geladen web.xml

<?xml version='1.0' encoding='UTF-8' ?>
<beans ...>
    <context:component-scan base-package="com.payforeign,com.payforeign.article" />
    <mvc:annotation-driven />
    <jpa:repositories base-package="com.payforeign.article" />

    <!-- Data Source -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" >
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost/payforeign" />
        <property name="username" value="root" />
        <property name="password" value="" />
    </bean>

    <!-- Hibernate -->
    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="packagesToScan" value="com.payforeign.article" />
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="showSql" value="true" />
                <property name="generateDdl" value="true" />
                <property name="database" value="MYSQL" />
            </bean>
        </property>
    </bean>

    <!-- enable the configuration of transactional behavior based on annotations -->
    <tx:annotation-driven />
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>
</beans>
  • Der stack trace ist klar: Ihnen fehlt die Feder-Daten, die Gläser aus Ihrem KLASSENPFAD befinden.
  • NoClassDefFoundError bedeutet fast immer einen Versionskonflikt. In diesem Fall, ich glaube, Sie brauchen die RC-Versionen (oder zumindest die neuesten release Versionen) zu bekommen, query-by-example.
  • Ich habe ein Upgrade spring-data-commons ab der version 1.11.4 zum 1.12.1 und es wurde das Problem behoben. Danke @chrylis
InformationsquelleAutor Black | 2016-04-18
Schreibe einen Kommentar