Рассмотрите возможность определения bean-компонента типа «com.gisapp.gisapp.dao.IUserDAO» в вашей конфигурации

Когда я запускаю приложение с весенней загрузкой, у меня появляется это сообщение:

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.. с пакетом

Maciej Kowalski 14.04.2019 16:12

Я отредактировал сообщение, чтобы показать реализацию IUserDAO, спасибо.

Carlos FTG 14.04.2019 16:16
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
1 153
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

1) Добавьте аннотацию @Repository, чтобы DAO загружался как bean-компонент в контекст Spring:

@Repository
public class UserDAO implements IUserDAO{

2) Просто сбоку.. скорее всего, вам также следует вставить EntityManager в него:

@PersistenceContext
private EntityManager em;

Другие вопросы по теме