2016-02-23 1 views
-1

Я получаю сообщение об ошибке, когда я использую @Autowired аннотацию. Ошибка корень я получаюПолучение @Autowired error

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [jp.co.vmt.qt.C0002.C0002Dao] 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)} 

Мой интерфейс

/** 
* 
*/ 
package jp.co.vmt.qt.C0002; 

import java.util.List; 

import jp.co.vmt.qt.model.TmtProject; 

import org.springframework.data.jpa.repository.JpaRepository; 
import org.springframework.data.jpa.repository.Query; 

/** 
* @author WINDOWS 
*/ 
public interface C0002Dao extends JpaRepository<TmtProject, Long> { 

    @Query("SELECT PROJECT_ID, PROJECT_NAME FROM TmtProject") 
    public List<TmtProject> getAllProjects(); 

} 

И мой класс реализации является

/** 
* 
*/ 
package jp.co.vmt.qt.C0002; 

import java.util.List; 

import jp.co.vmt.qt.model.TmtProject; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.data.domain.Page; 
import org.springframework.data.domain.Pageable; 
import org.springframework.data.domain.Sort; 
import org.springframework.stereotype.Repository; 

/** 
* @author WINDOWS 
*/ 
@Repository 
public class C0002Service implements C0002Dao { 

    @Autowired 
    private C0002Dao c0002Dao; 

    /* 
    * (non-Javadoc) 
    * @see jp.co.vmt.qt.C0002.C0002Dao#getAllProjects() 
    */ 
    @Override 
    public List<TmtProject> getAllProjects() { 

    return this.c0002Dao.getAllProjects(); 

    } 

... other methods from extended interface 

} 

А вот где я c0002Service

/** 
* 
*/ 
package jp.co.vmt.qt.C0002; 

import java.util.List; 

import jp.co.vmt.qt.model.TmtProject; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Component; 

import com.fasterxml.jackson.databind.ObjectMapper; 

/** 
* @author WINDOWS 
*/ 
@Component 
public class C0002Logic { 

    @Autowired 
    private C0002Dao c0002Service; 

    public String getProjectList() throws Exception { 

    List<TmtProject> projectList = this.c0002Service.getAllProjects(); 

    ObjectMapper mapper = new ObjectMapper(); 
    String jsonString = mapper.writeValueAsString(projectList); 
    return jsonString; 

    } 

} 

I иметь мой C0002Logic, сделанный автоматически в моем c который не показан здесь. Насколько я понимаю, я создал интерфейс (C0002Dao) и реализующий класс (C0002Service) этого интерфейса, который я пометил с помощью @Repository, и я автолюбирую сервис для своего класса Logic (C0002Logic). Тем не менее, я получаю ошибку, показанную выше. Любые идеи о том, где я ошибся и как их решить? Благодаря

+0

Я добавил @Component к моему DAO, но он все равно дает мне ту же ошибку. – paaaaat

+0

Почему ваша служба реализует Spring Data JPA DAO? Это не имеет смысла и показывает, что вы должны начать с чтения документации (или, по крайней мере, одного из официальных руководств). – kryger

ответ

0

Проблема в том, я считаю,
В C0002Service,

@Autowired 
private C0002Dao c0002Dao; 

U ¨R пытается внедрить в C0002Dao в момент квалификации боба (например, из C0002Service) собирается быть зарегистрирован.

+0

Что это значит? Должен ли я удалить эту часть? – paaaaat

+0

Да. PLS удалить его .. вы не можете сделать DI для C0002Dao там. –