Приложение запускается локально без проблем, но в докер контейнере No qualifying bean of type 'org.example.repositories.UserRepository

Я написал java приложение на java 17 и запускаю его с помощью Tomcat 10

Запуская мое приложение локально все прекрасно работает но как только я пытаюсь запустить приложение внутри докер контейнера я получаю ошибку:

No qualifying bean of type 'org.example.repositories.UserRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

Вот как выглядит мой класс UserRepository:

package org.example.repositories;

import org.example.entities.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.Optional;

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    Optional<User> findByUsername(String username);

    boolean existsByUsername(String username);

    boolean existsByEmail(String email);
}

А вот как выглядит единственный класс, в котором он используется:

package org.example.services.impl;

import lombok.RequiredArgsConstructor;
import org.example.entities.User;
import org.example.enums.ERole;
import org.example.repositories.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl {

    @Autowired
    private  UserRepository repository;


    public User save(User user) {
        return repository.save(user);
    }



    public User create(User user) {
        if (repository.existsByUsername(user.getUsername())) {
            // Заменить на свои исключения
            throw new RuntimeException("Пользователь с таким именем уже существует");
        }

        if (repository.existsByEmail(user.getEmail())) {
            throw new RuntimeException("Пользователь с таким email уже существует");
        }

        return save(user);
    }


    public User getByUsername(String username) {
        return repository.findByUsername(username)
                .orElseThrow(() -> new UsernameNotFoundException("Пользователь не найден"));

    }


    public UserDetailsService userDetailsService() {
        return this::getByUsername;
    }

    public User getCurrentUser() {
        // Получение имени пользователя из контекста Spring Security
        var username = SecurityContextHolder.getContext().getAuthentication().getName();
        return getByUsername(username);
    }


    @Deprecated
    public void getAdmin() {
        var user = getCurrentUser();
        user.setRole(ERole.ROLE_ADMIN);
        save(user);
    }
}

В чем может быть проблема и какие могут быть варианты решения?


Ответы (0 шт):