UserService.java

package com.stocks.stockease.security;

import java.util.Optional;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.stocks.stockease.security.internal.UserRepository;

import lombok.RequiredArgsConstructor;

/**
 * Security module's public API for looking up users.
 * Other modules depend on this service rather than reaching into the module's repository.
 */
@Service
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class UserService {

    private final UserRepository userRepository;

    /**
     * Finds a user by their unique username.
     *
     * @param username login name to look up
     * @return the user, or empty if no account carries that username
     */
    public Optional<User> findByUsername(String username) {
        return userRepository.findByUsername(username);
    }
}