[TIL] 20241009

ekkkyo_j·2024년 10월 10일

[내배캠 Java 6기] TIL

목록 보기
30/38

1. JWT Filter & Argument Resolver

Filter는 요청과 응답에 대해 전반적인 전처리 및 후처리를 하기 위한 수단이다.
ArgumentResolver는 컨트롤러 메서드의 파라미터를 편리하게 주입받기 위해 사용된다.

2. IoC Container & Bean

Bean

객체

IoC Container

Bean 담는 곳

@Component

Bean으로 만들기

  1. @Service
  2. @RestController, @Controller
  3. @Repository - 현재는 사용한 적이 없다.

@ComponentScan

@Component 붙은 놈 찾아서 Bean으로 만들기 (@SpringBootApplication에 포함)

  1. @ComponentScan이 @Component를 찾는다
  2. 찾은 @Component를 Bean(객체)으로 만든다.
  3. 만든 Bean을 IoC Container에 담는다.

Bean=객체 (객체는 new 해서 생성하는 것)
그런데 @Service, @RestController 이런 것들이 붙은 클래스들은 new 해서 생성한 적이 없네?
컴포넌트들은 Bean(객체)으로 생성되서 IoC Container에 의해 관리되더라.
그리고 필요한 곳이 있으면 DI 되더라.

💡 왜 이렇게까지 하는데?

1. 객체를 하나만 만들어서 돌려쓸 수 있다.

2. 간편하게 의존성 주입(DI)해서 사용할 수 있다.

굳이 매번 new 해서 생성할 필요 없다

@Service, @RestController, @Component, @Repository

3. Static & Final

static 변수는 클래스 레벨에서 생성되므로 new 키워드로 객체를 생성하지 않아도 메모리에 할당됩니다. 이는 프로그램 실행 중 메모리의 클래스 영역(또는 메서드 영역)에 위치하며, 모든 인스턴스에서 공통으로 접근할 수 있습니다.

예를 들어, 다음과 같은 static 변수는 프로그램이 시작될 때 메모리에 올라가고, 모든 객체에서 같은 값을 공유하게 됩니다

public class Example {
    public static int count = 0; // static 변수

    public Example() {
        count++; // 모든 인스턴스가 같은 count를 공유
    }
}

final 키워드는 변수가 상수가 되도록 하거나, 클래스 또는 메서드의 변경을 방지할 때 사용됩니다.

static은 클래스 레벨에서 공유되며, 객체 간에 공유할 때 유용합니다.
final은 한 번 정의되면 변경되지 않도록 보장하는 데 사용됩니다.

static final 변수는 변경할 수 없는 상수가 되며, 클래스 레벨에서 공유된다.

4. 정적 팩토리 메소드

User user = User.fromAuthUser(authUser)
profile
게으르지만 성실히 공부하기^_^

0개의 댓글