인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트

컨트롤러를 소형 테스트로 만들기

하위 패키지의 상위 패키지 참조

작성

·

278

0

안녕하세요 강의 잘 듣고있습니다.

1분 42초쯤에 말씀하신 치명적인 실수에 대해서 질문드립니다.

 

강의에서는 후반부에 CertificationService가 자연스럽게 사라짐에 따라 하위 패키지인 UserServiceImpl상위 패키지인 CertificationService를 참조하지 않게 변경됐지만, 만약 CertificationService이 계속 존재했다면 UserServiceImpl은 어떠한 형태로 올바르게 CertificationService을 참조할 수 있을까요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

제공된 정보 내용과 직접적인 연관이 없어서 구체적인 코드 예제를 드리지는 못하지만, 일반적으로 Spring에서는 다양한 방법으로 다른 패키지의 클래스 또는 서비스를 참조할 수 있습니다. 이러한 참조는 주로 @Autowired 어노테이션을 사용하여 의존성 주입을 통해 이루어집니다. 만약 UserServiceImpl 클래스가 CertificationService 클래스를 올바르게 참조하려면, UserServiceImpl 클래스 내에서 CertificationService 타입의 멤버 변수를 선언하고 @Autowired 어노테이션을 사용하여 Spring이 자동으로 해당 타입의 빈(Bean)을 찾아 주입하도록 설정할 수 있습니다.

예를 들어, 다음과 같은 방식으로 구현할 수 있습니다:

@Service
public class UserServiceImpl implements UserService {

    private CertificationService certificationService;

    @Autowired
    public UserServiceImpl(CertificationService certificationService) {
        this.certificationService = certificationService;
    }

    // 클래스 내 다른 메소드들...
}

이 예제에서는 생성자 주입 방식을 사용하였으나, 필드 주입이나 세터 주입 방식을 사용할 수도 있습니다. 그러나 일반적으로는 생성자 주입 방식이 권장되며, 이 방식은 순환 참조를 방지하고 테스트 용이성을 높여주는 장점이 있습니다.

답변이 도움이 되었길 바랍니다. 다른 궁금한 점이 있으시면 언제든 질문해주시기 바랍니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기