2016-09-09 6 views
0

스프링 부트, 하이버 네이트 및 MySQL을 사용하여 기본 CRUD API를 수행하려고합니다. 나는 this tutorial을 팔로우하고 있습니다. 나는 이것에 달려있다 :스프링 부트 : 이름이 'jpaContext'인 빈을 생성하는 중 오류가 발생했습니다 : NoSuchBeanDefinitionException

UnsatisfiedDependencyException: Error creating bean with name 'jpaContext': Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type [java.util.Set] found for dependency [java.util.Set<javax.persistence.EntityManager>].

은 여기 내 pom.xml :

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.example</groupId> 
    <artifactId>demo</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <name>demo</name> 
    <description>Demo project for Spring Boot</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.0.RELEASE</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-rest</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-jdbc</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>5.2.2.Final</version> 
     </dependency> 

     <!-- for JPA, use hibernate-entitymanager instead of hibernate-core --> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>5.2.2.Final</version> 
     </dependency> 

     <!--<dependency>--> 
      <!--<groupId>org.eclipse.persistence</groupId>--> 
      <!--<artifactId>javax.persistence</artifactId>--> 
      <!--<version>2.0.0</version>--> 
     <!--</dependency>--> 
     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-commons</artifactId> 
      <version>1.12.2.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-jpa</artifactId> 
      <version>1.10.2.RELEASE</version> 
     </dependency> 
<!-- I added the two above dependencies but the error is still there. --> 

     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-dbcp2</artifactId> 
      <version>2.1</version> 
     </dependency> 

     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-tomcat</artifactId> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 


</project> 

가 여기 내 applicationContext.xml :

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns="http://www.springframework.org/schema/mvc" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" 
      xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" 
      xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> 

    <!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --> 

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

    <!-- Enables the Spring MVC @Controller programming model --> 
    <annotation-driven /> 

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

    <beans:bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> 
     <beans:property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
     <beans:property name="url" value="jdbc:mysql://localhost:3306/todo" /> 
     <beans:property name="username" value="root" /> 
     <beans:property name="password" value="pass" /> 
    </beans:bean> 

    <!-- Hibernate 5 SessionFactory Bean definition --> 
    <beans:bean id="hibernate5AnnotatedSessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> 
     <beans:property name="dataSource" ref="dataSource" /> 
     <beans:property name="annotatedClasses"> 
      <beans:list> 
       <beans:value>com.example.models.Todo</beans:value> 
      </beans:list> 
     </beans:property> 
     <beans:property name="hibernateProperties"> 
      <beans:props> 
       <beans:prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect 
       </beans:prop> 
       <beans:prop key="hibernate.show_sql">true</beans:prop> 
      </beans:props> 
     </beans:property> 
    </beans:bean> 

    <beans:bean id="todoDAO" class="com.example.models.TodoDAOImpl"> 
     <beans:property name="sessionFactory" ref="hibernate5AnnotatedSessionFactory" /> 
    </beans:bean> 
    <beans:bean id="todoService" class="com.example.services.TodoServiceImpl"> 
     <beans:property name="todoDAO" ref="todoDAO"></beans:property> 
    </beans:bean> 

    <beans:bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> 
     <beans:property name="sessionFactory" ref="hibernate5AnnotatedSessionFactory" /> 
    </beans:bean> 

</beans:beans> 

나는이 SO post을보고 있지만 아무 대답이 없기 때문에 훨씬 도움이되지 않았다. 내 이해는 JPA 주석으로 객체를 지속시키기 위해 Hibernate API를 사용하고 있다는 것이다. pom.xml에 JPA 종속성을 추가해야합니까? 나는 정말로 혼란 스럽다.

모든 도움을 주시면 매우 감사하겠습니다. CRUD API를 간단하게 설정하고 다음 튜토리얼을 꽤 포괄적 인 것으로 생각했습니다.

+0

스프링 부트를 사용하고 있다면, 그런 큰 외부 구성 파일을 사용해서는 안됩니다. 모든 것을 죽이고'application.properties'로 대체하십시오. – chrylis

+0

두 줄을 말씀해주십시오. 저는 Spring 초보자이므로 프로젝트 구성에 대한 경험이 없습니다. – Sticky

+0

Spring 시동 애플리케이션 속성을 사용하여 전체 Hibernate 설정을 자동 구성합니다. [좋은 소개입니다.] (http://blog.netgloo.com/2014/10/27/using-mysql-in-spring-boot-via-spring-data-jpa-and-hibernate/) – chrylis

답변

0

Maven 컴파일러 플러그인을 POM에 추가 할 때 작동합니까? 다음과 같은 것 :

+0

불행히도 Maven 빌드 오류가 발생하고 있습니다./설정이 변경되어 변경 될 경우 알려 드리겠습니다. – Sticky

+0

그것은 단지 야생의 추측이었습니다. 죄송합니다. gist.github.com에 전체 시작 로그 파일을 게시 할 수 있습니까? 아마도 로그 파일의 이전 오류로 인해 엔티티 관리자를 만들 수없는 이유를 알 수 있습니다. –

+0

persistence.xml을 통해 또는 어쨌든 주석을 통해 지속성 관리자를 정의 했습니까? 귀하의 응용 프로그램 컨텍스트에서 볼 수 없습니다. 우리 프로젝트에서는'org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager' 클래스를 통해 Spring의 퍼시스턴스 유닛 지원을 사용합니다. –

관련 문제