Spring 면접 준비

Jinjin·2023년 8월 29일
0
post-thumbnail

1. IOC 컨테이너

  • 인스턴스 생성부터 소멸까지 인스턴스의 생명주기를 개발자가 아닌 컨테이너가 대신 해준다.
  • 객체관리 주체가 프레임워크가 되기 때문에 개발자는 코드에만 집중할 수 있습니다.

✔️ POJO란?

: 특정 자바 모델이나 프레임워크를 따지지 않는 Java Object를 지칭한다. Ex) Java Bean

  • IOC 컨테이너를 2개로 나눌 수 있다.
    1. DL

      : 저장소에 저장되어 있는 Bean에 접근하기 위해 컨테이너가 제공하는 API를 이용하여 Bean을 Lockup하는 것 ⇒ DL를 사용하면 컨테이너끼리 종속이 증가하므로 주로 DI를 사용한다.

    2. DI 

      : 각 클래스간의 의존관계를 빈 설정(Bean Definition) 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것

      ⇒ Setter, Constructor, Method injection이 있다.

      • 스프링 빈을 등록하는 2가지 방법
        1. 컴포넌트 스캔과 자동 의존관계 설정

          : 클래스 선언부에 @Component 어노테이션을 붙여넣기

          @Controller, @Service, @Repository 모두 @Component 어노테이션을 포함하고 있으며 해당 어노테이션을 통해 등록된 클래스들은 스프링 컨테이너에 의해 자동으로 생성되어 스프링 빈으로 등록됩니다.

        2. 자바 코드로 직접 스프링 빈 등록

          : 설정 클래스를 만들고  @Configuration 어노테이션을 클래스 선언부 위에 추가하면 됩니다.

          그리고 특정 타입을 리턴하는 메소드를 만들고, @Bean 어노테이션을 붙여주면 자동으로 해당 타입의 빈 객체가 생성됩니다.

  • 의존성 주입 3가지 방법 : Spring은 @Autowired 어노테이션을 이용해 다양한 의존성 주입(DI) 방법을 제공한다. 의존성 주입은 필요한 객체를 직접 생성하는 것이 아닌 외부로부터 객체를 받아 사용하는 것이다. 이를 통해 객체간의 결합도를 줄이고 코드의 재활용성을 높일 수 있다.
    • Setter Injection
    • Constructor Injection
    • Method Injection

2. Filter

: 스프링 프레임워크에서 필터로 인증 등 다양한 작업을 하는데 사용한다.
  • Filter는 요청이 DispatcherServlet에 의해 다뤄지기 전-후에 동작한다.
  • Filter는 FilterChain(필터 체인)을 통해 여러 필터가 연쇄적으로 동작하게 할 수 있다.
  • Filter는 주로 어디에 쓰이나? 주로 요청에 대한 인증, 권한 체크 등을 하는데 쓰인다. 들어온 요청이 DispatcherServlet에 전달되기 전에 헤더를 검사해 인증 토큰이 있는지, 없는지 올바른지 올바른지 아닌지 검사할 수 있다.
  • Filter, 어떻게 사용하나?
    1. 필터 클래스를 만든다.(servlet의 Filter 인터페이스를 구현하여 … )

      public class FirstFilter implements Filter {}

      • 필터 인터페이스가 가지고 있는 3가지 메소드
        1. init() : 필터가 생성될 때 수행하는 메소드
        2. doFilter() : Request, Response가 필터를 거칠 때 수행되는 메소드
        3. destroy() : 필터가 소멸될 때 수행되는 메소드
    2. 만든 필터를 SpringBean으로 등록한다.

      • 스프링 설정에 FilterRegisterBean을 이용해 직접 만든 필터를 등록한다.

      ✔️ 여러 개의 필터가 있을 때, 필터의 동작 순서를 FilterRegisterBean의 setOrder() 메소드를 통해 결정할 수 있다.

3. AOP

AOP 설명

4. Spring 전체

📌 컨테이너란?

보통 객체의 생명주기를 관리하고 생성된 인스턴스들에게 추가적인 기능을 제공하도록 하는

📌 Interceptor란?

client에서 server로 들어온 request 객체를 Controller의 Handler로 도달하기 전 가로채어 원하는 추가 작업이나 로직을 수행 한 후 Handler로 보낼 수 있도록 해주는 Module이다.

📌 Filter ,Interceptor, AOP의 공통점과 차이점?

어플리케이션의 요청 및 응답 처리를 처리하는 점에서는 같지만 작동 방식과 적용 시기에서 차이가 있습니다.

📌 Spring에서의 의존성 주입의 3가지 방법

  1. 생성자 주입
  2. Field 주입
  3. Setter 주입

📌 Filter와 interceptor의 차이점?


📌 IOC란?
: 제어의 역전이라는 뜻으로 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 말한다.
Before) 개발자가 객체를 생성하고 관리하며 프로그램의 제어 흐름을 스스로 조종했다.
After) Spring을 사용하면서 스프링 컨테이너가 프로그램의 제어흐름을 제어하게 된다.

profile
BE Developer

0개의 댓글