2014-02-21 4 views
3

내 코드에서 User 리포지토리를 사용하려고하지만 intellij에서 오류가 발생했습니다.리포지터리 서비스를 실행할 수 없습니다. Spring JPA

interface is not allowed for non abstract beans 

다음과 같은 설정이 있습니다.

@Entity 
public class User { 

    @Id 
    private long id; 
    private String firstName; 
    private String lastName; 
    private String profileUrl; 
    private String email; 
    private String location; 

    protected User(){}; 

    public User(String first, String last, String profileUrl, String email, String location){ 
     this.firstName = first; 
     this.lastName = last; 
     this.profileUrl = profileUrl; 
     this.email = email; 
     this.location = location; 

    } 

    public User(Person person){ 
     this.firstName = person.getName().getGivenName(); 
     this.lastName = person.getName().getFamilyName(); 
     this.profileUrl = person.getImage().getUrl(); 
     this.email = person.getEmails().get(0).getValue(); 
     this.location = person.getCurrentLocation(); 
    } 
} 


public interface UserRepository extends CrudRepository<User, Long> { 

    List<User> findByProfileId(long id); 
} 

나는 @Service@Repository으로하지만 아무 소용이 주석을 시도했다.

@Component 
public class UserRepositoryImpl { 

    @Autowired 
    private UserRepository userRepository; 


    public void doSomething() { 
     List<User> byProfileId = userRepository.findByProfileId(100); 
    } 
} 

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

    <rep:repositories base-package="com.planit.persistence.*"/> 
    <bean id="userRepository" class="com.planit.persistence.registration.UserRepository"/> 

    <!-- DB CONNECTION--> 
    <bean class="java.net.URI" id="dbUrl"> 
     <constructor-arg value="#{T(com.ProjectUtils).getDBUrl()}"/> 
    </bean> 

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="org.postgresql.Driver"/> 
     <property name="url" 
        value="#{ 'jdbc:postgresql://' + @dbUrl.getHost() + ':' + @dbUrl.getPort() + @dbUrl.getPath() }"/> 
     <property name="username" value="#{ @dbUrl.getUserInfo().split(':')[0] }"/> 
     <property name="password" value="#{ @dbUrl.getUserInfo().split(':')[1] }"/> 
    </bean> 


    <bean id="myEmf" 
      class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
     <property name="dataSource" ref="dataSource"/> 
     <property name="packagesToScan" value="com.planit.persistence"/> 
     <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="POSTGRESQL"/> 
      </bean> 
     </property> 
    </bean> 

    <bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
     <property name="entityManagerFactory" ref="myEmf"/> 
    </bean> 

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

오류가 내 userRepository 빈을 정의하고 내 spring.xml의 라인에 발생합니다.

미리 감사드립니다.

<bean id="userRepository" class="com.planit.persistence.registration.UserRepository"/> 

가 SpringData 워드 프로세서 here를 참조하십시오 : 나는 당신을 믿지

답변

4

@Repository이 누락 된 경우 repo 인터페이스 위에 추가하고 Spring에서 허용되지 않는 bean 선언을 제거하십시오.

+1

감사합니다.이 문서는 Spring 문서 및 예제에서 누락 된 것으로 보입니다. – user1089599

1

는이 줄을 제거해야합니다.

관련 문제