Когда я запускаю приложение с весенней загрузкой, у меня появляется это сообщение:
APPLICATION FAILED TO START
Description:
Field userDAO in com.gisapp.services.impl.UserService required a bean of type 'com.gisapp.gisapp.dao.IUserDAO' that could not be found.
The injection point has the following annotations: - @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'com.gisapp.gisapp.dao.IUserDAO' in your configuration.
Что я прочитал в другом посте, связанном с этой проблемой, так это то, что мне нужно настроить аннотацию @ComponentScan, но она не работает.
ОСНОВНОЙ КЛАСС:
package com.gisapp.gisapp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan("com.gisapp")
public class GisappApplication {
public static void main(String[] args) {
SpringApplication.run(GisappApplication.class, args);
}
}
КЛАСС ОБСЛУЖИВАНИЯ
@Service
public class UserService implements IUserService {
@Autowired
IUserDAO userDAO;
@Override
@Transactional(readOnly=true)
public Object login() {
return userDAO.login();
}
}
- UserDAO
package com.gisapp.gisapp.dao.impl;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import com.gisapp.gisapp.dao.IUserDAO;
import com.gisapp.models.entity.User;
public class UserDAO implements IUserDAO{
@Override
public Object login() {
StringBuilder query = new StringBuilder();
query.append("SELECT * FROM User");
EntityManager em = null;
Query q = em.createNativeQuery(query.toString());
List<User> result=q.getResultList();
return result;
}
}
IUserDAO должен быть распознан как компонент, и приложение должно работать
Я отредактировал сообщение, чтобы показать реализацию IUserDAO, спасибо.




1) Добавьте аннотацию @Repository, чтобы DAO загружался как bean-компонент в контекст Spring:
@Repository
public class UserDAO implements IUserDAO{
2) Просто сбоку.. скорее всего, вам также следует вставить EntityManager в него:
@PersistenceContext
private EntityManager em;
покажи класс реализующий IUserDAO.. с пакетом