Java Spring Framework 주니어 기술면접

Java 주니어 (1~3년) 프레임워크 5문항 조회수 88 · 2026-06-26 (금) 11:10:38
1 Spring Core
Medium

Q. Spring에서 @Autowired를 사용할 때 같은 타입의 빈이 여러 개 존재하면 어떤 문제가 발생하며, 이를 해결하기 위한 방법 3가지를 설명해주세요.

A. 모범답안

같은 타입의 빈이 여러 개 존재하면 NoUniqueBeanDefinitionException이 발생합니다. 해결 방법으로는 첫째, @Primary 어노테이션으로 우선순위를 지정하는 방법, 둘째, @Qualifier를 사용해 빈 이름을 명시하는 방법, 셋째, 필드명이나 파라미터명을 빈 이름과 동일하게 맞추는 방법이 있습니다. 실무에서는 @Primary를 기본 구현체에 지정하고, 특수한 경우에만 @Qualifier로 명시적으로 선택하는 방식을 많이 사용합니다.

핵심 포인트
  • • NoUniqueBeanDefinitionException 발생
  • • @Primary로 우선순위 지정
  • • @Qualifier로 빈 이름 명시
  • • 필드명/파라미터명 매칭
Follow-up 질문

@Primary와 @Qualifier를 동시에 사용하면 어떤 것이 우선순위를 가지나요?

2 JPA Entity
Easy

Q. JPA에서 @Entity 클래스를 작성할 때 반드시 지켜야 하는 규칙 4가지를 설명해주세요.

A. 모범답안

첫째, 기본 생성자(파라미터가 없는 생성자)가 필수이며 접근 제어자는 public 또는 protected여야 합니다. 둘째, final 클래스로 선언할 수 없습니다. 셋째, @Id 어노테이션으로 식별자 필드를 반드시 지정해야 합니다. 넷째, 필드에 final을 사용할 수 없습니다. 이러한 제약은 JPA가 프록시 객체를 생성하고 리플렉션을 통해 엔티티를 관리하기 때문에 필요합니다.

핵심 포인트
  • • 기본 생성자 필수(public/protected)
  • • final 클래스 불가
  • • @Id 식별자 필수
  • • 필드에 final 사용 불가
Follow-up 질문

롬복의 @AllArgsConstructor만 사용하면 어떤 문제가 발생하나요?

3 Spring MVC
Medium

Q. @RestController와 @Controller의 차이점을 설명하고, @ResponseBody의 역할과 JSON 변환 과정에서 사용되는 라이브러리를 말씀해주세요.

A. 모범답안

@Controller는 View를 반환하는 전통적인 MVC 컨트롤러이고, @RestController는 @Controller와 @ResponseBody를 합친 것으로 모든 메서드가 자동으로 HTTP 응답 본문으로 데이터를 반환합니다. @ResponseBody는 메서드의 리턴 값을 HTTP 응답 본문에 직접 작성하도록 지시하며, 이때 HttpMessageConverter가 객체를 JSON으로 변환합니다. Spring Boot는 기본적으로 Jackson 라이브러리를 사용하여 객체를 JSON으로 직렬화하고 역직렬화합니다.

핵심 포인트
  • • @RestController = @Controller + @ResponseBody
  • • HTTP 응답 본문으로 데이터 직접 반환
  • • HttpMessageConverter가 변환 담당
  • • Jackson 라이브러리 사용
Follow-up 질문

Jackson 대신 Gson을 사용하려면 어떻게 설정해야 하나요?

4 JPA Relationship
Medium

Q. JPA에서 @OneToMany 양방향 관계를 설정할 때 mappedBy 속성의 역할을 설명하고, 연관관계의 주인(Owner)을 결정하는 기준과 주의사항을 말씀해주세요.

A. 모범답안

mappedBy는 양방향 관계에서 연관관계의 주인이 아닌 쪽에 설정하며, 상대편 엔티티의 어떤 필드에 의해 매핑되는지를 명시합니다. 연관관계의 주인은 외래키를 관리하는 쪽으로, 일반적으로 @ManyToOne 쪽이 주인이 됩니다. 주의할 점은 연관관계의 주인 쪽에서만 외래키 값을 변경할 수 있으며, mappedBy가 설정된 쪽은 읽기만 가능합니다. 양방향 관계 설정 시 편의 메서드를 작성하여 양쪽 객체의 참조를 동시에 설정하는 것이 좋습니다.

핵심 포인트
  • • mappedBy는 주인이 아닌 쪽에 설정
  • • 외래키 관리하는 쪽이 주인(@ManyToOne)
  • • 주인만 외래키 변경 가능
  • • 편의 메서드로 양쪽 참조 설정
Follow-up 질문

편의 메서드를 주인 쪽과 반대편 중 어디에 작성하는 것이 좋을까요?

5 Spring Configuration
Easy

Q. @Configuration과 @Bean 어노테이션의 역할을 설명하고, 스프링 빈을 등록하는 방법으로 컴포넌트 스캔 방식과 수동 빈 등록 방식 중 어떤 경우에 각각을 사용하는 것이 적합한지 설명해주세요.

A. 모범답안

@Configuration은 스프링 설정 클래스임을 나타내며, @Bean은 메서드가 반환하는 객체를 스프링 빈으로 등록합니다. 컴포넌트 스캔(@Component, @Service 등)은 애플리케이션의 비즈니스 로직을 담당하는 일반적인 클래스들에 사용하며, 수동 빈 등록(@Configuration + @Bean)은 외부 라이브러리 객체를 빈으로 등록하거나 복잡한 생성 로직이 필요한 경우, 또는 설정 정보를 명확히 드러내야 할 때 사용합니다. 실무에서는 대부분 컴포넌트 스캔을 사용하고, 필요한 경우에만 수동 등록을 선택합니다.

핵심 포인트
  • • @Configuration은 설정 클래스 표시
  • • @Bean은 수동 빈 등록
  • • 컴포넌트 스캔은 애플리케이션 클래스용
  • • 수동 등록은 외부 라이브러리나 복잡한 설정용
Follow-up 질문

@Configuration 클래스에서 @Bean 메서드가 다른 @Bean 메서드를 호출하면 어떻게 동작하나요?

댓글 0

로그인 후 댓글을 작성할 수 있습니다.

아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!