이번 주는 항해 5주차 숙련주차였다. 지난 주에 입문주차 때 배웠던 내용들을 좀 더 자세히 살펴보면서 로그인 기능을 구현하는 것이 메인 목표였고 jpa 관계설정과 영속성 컨텍스트에 대해서도 배웠다. 그리고 마지막에 aws에 EC2와 RDS를 사용하여 배포하는 것까지 이번 주에 알아야 할 내용이었다.
우선 jwt를 이용한 로그인 기능은 다 이해한 것 같고 jpa 관계설정 부분도 괜찮은 것 같다. 영속성 컨텍스트에 대해선 아직 헷갈려서 계속 봐야 할 것 같고 aws에서 RDS를 사용하여 배포하는 것은 못했다,, 사실 이번 주 했어야 했다는 것을 오늘 알았다,, 허허 심화주차까지 끝나고 과제를 배포해 볼 생각이다.
이번 주 키워드: DI, IoC, Bean
1. DI (Dependency Injection) - 의존성 주입
하나의 디자인 패턴으로서 응용 프로그램의 구성 요소를 분리하고 더 쉽게 테스트하고 유지보수할 수 있도록 한다.
DI를 사용하면 객체가 종속성을 생성하는 대신 종속성이 외부에서 객체에 주입된다. 이렇게 의존성 주입을 해주면 객체들 간에 약한 결합 관계, 약한 의존성을 가지게 할 수 있다.
의존성 주입에는 총 3가지 방법이 있는데 필드주입, 메서드주입(setter), 생성자주입이다. 이 가운데 가장 추천하는 방식은 생성자주입이다.
2. IoC(Inversion of Control) - 제어 흐름의 역전
기존 프로그램에서 애플리케이션은 종속성의 생성 및 관리를 제어한다. IoC를 사용하면 제어가 반전되고 종속성을 생성하고 관리하는 책임이 Spring 컨테이너와 같은 컨테이너에 위임된다.
스프링 컨테이너는 DI를 사용하여 객체에 종속성을 주입하므로 연결이 느슨해지고 문제가 분리된다. 객체는 종속성에 대해서만 알면 되며 객체가 생성 또는 관리되는 방법은 알 필요가 없다.
DI 패턴을 사용하여 IoC 설계 원칙을 구현하고 있다.
제어의 역전이란?
인터페이스를 구현한 객체(인스턴스)를 필요로 하는 객체에 전달(주입)하여 제어를 넘기는 것이다.
3. Bean
스프링에서 bean은 스프링 컨테이너에 의해 관리되는 객체이다.
Bean은 Spring 애플리케이션의 기본 빌딩 블록이며 컨트롤러, 서비스, 데이터 액세스 객체 또는 유틸리티 클래스와 같은 애플리케이션의 모든 객체를 나타내는 데 사용할 수 있다. Bean을 사용하면 응용 프로그램이 느슨한 결합, 모듈성 및 테스트 가능성과 같은 IoC 및 DI의 이점을 활용할 수 있다.
4. 이번 주의 TIL
5. 이번 주에 정리한 블로그
2023.03.13 - [알고리즘] - [BOJ][DP] 2156 - 포도주 시식
[BOJ][DP] 2156 - 포도주 시식
DP,, 점화식 생각해내기가 너무 어려운 것 같다,, 1. 문제 입력: 첫째 줄에 포도주 잔의 개수 n이 주어진다. (1 ≤ n ≤ 10,000) 둘째 줄부터 n+1번째 줄까지 포도주 잔에 들어있는 포도주의 양이 순서대
joogongsun.tistory.com
2023.03.13 - [웹백엔드] - Exception Handling - 예외 처리
Exception Handling - 예외 처리
1. 기존 예외 처리 방법 이때까지 예외 처리는 딱히 방법이라고 할 것도 없었다.. 그냥 Spring에서 제공하는 exception을 메시지를 담아서 throw 해줬다.. throw new IllegalArgumentException("잘못된 요청입니다.
joogongsun.tistory.com