Я получаю сообщение об ошибке, когда я использую @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). Тем не менее, я получаю ошибку, показанную выше. Любые идеи о том, где я ошибся и как их решить? Благодаря
Я добавил @Component к моему DAO, но он все равно дает мне ту же ошибку. – paaaaat
Почему ваша служба реализует Spring Data JPA DAO? Это не имеет смысла и показывает, что вы должны начать с чтения документации (или, по крайней мере, одного из официальных руководств). – kryger