BackEnd 🌱/spring

    AWS EC2 배포하기 - (1)

    서론 지난 2주 2023 GDSC 해커톤을 진행하면서 프론트엔드와 백엔드의 연동을 진행하게 되었습니다. 이 과정에서 저는 Amazon Web Services(AWS)의 Elastic Compute Cloud(EC2)를 사용해 배포했습니다. EC2는 스케일링에 유연하고 관리가 편리한 서비스로 알려져 있습니다. 이번 기회를 통해 EC2의 사용법을 기록해두려 합니다. 1. 인스턴스 생성 먼저, AWS 사이트에 로그인한 후 우측 상단에 위치한 리전 드롭다운에서 서울 리전을 선택합니다. 이는 서버의 물리적 위치를 의미하며, 사용자와 가까운 리전을 선택하면 더 빠른 네트워크 속도를 얻을 수 있습니다. 그 후, 서비스 탭에서 EC2를 검색하여 EC2 관리 콘솔로 이동합니다. 콘솔의 오른쪽 상단에 있는 '인스턴스 시작..

    [spring] 서블릿(Servlet)이란?

    목차 서블릿(Servlet)이란? 서블릿 컨테이너 JSP와 서블릿 1. 서블릿(Servlet)이란? 서블릿은 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술입니다. 쉽게 말해, 자바로 웹 어플리케이션을 개발할 수 있도록 하기 위해 만들어진 표준입니다. 서블릿은 응답과 요청을 위한 객체들을 제공합니다. 아래는 서블릿의 예시 코드입니다. @WebServlet(name ="helloServlet", urlPatterns = "/hello") public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpS..

    [spring] 수동 빈 등록 vs 컴포넌트 스캔 (예제실습)

    목차 서론 수동 빈 등록 컴포넌트 스캔 수동, 자동 언제 사용하나요? 서론 백 번 보는 것 보다 한번 만들어 보는것이 낫겠다 싶어서 예제를 만들어 본 후, 정리해 보려고 합니다. 제가 만들고 싶은 예제는 다음과 같습니다. 치킨 가게의 요리사는 치킨 레시피에 의존합니다. 만약 치킨 레시피가 변경된다면, 요리사는 치킨을 새로운 방법으로 만들게 됩니다. 치킨 레시피는 총 2개로 카레 치킨과 후라이드 치킨이 있습니다. 수동 빈 등록 먼저, ChickenChef 클래스를 생성한 뒤, 생성자를 통한 의존관계 주입을 설정합니다. log라는 현재 주입된 스프링 빈을 출력하는 간단한 로직도 추가했습니다. package hello.core.chicken; public class ChickenChef{ private fin..

    [spring] DI와 DL의 차이 ,IoC

    목차 제어의 역전, IoC 의존관계(Dependency)란? DI(Dependency Injection)이란? DL(Dependency Lookup)이란? 1. 제어의 역전, IoC 먼저, 제어의 역전(Inversion of Control)이라는 개념에 대해서 알아보겠습니다. 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)이라 합니다. 기존의 제어 방식은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행했습니다. 하지만, 이 방식은 계층간의 결합성이 높아서 만약 한 개의 객체를 변경하면, 연결된 다른 객체들을 수정해주어야 합니다. 이때문에 계층간의 의존관계의 결합도를 낮추고, 유지보수성을 향상시키기 위해 제어의 역전(IoC)이..

    [spring] 빈 생명주기 콜백

    본 포스팅은 김영한 님의 스프링 핵심원리 기본편 강의 섹션 8을 듣고 요약한 내용입니다. 스프링 빈은 객체를 생성하고, 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 수 있는 준비가 완료됩니다. 따라서 초기화 작업은 의존관계 주입이 모두 완료되고 난 다음에 호출해야 합니다. 이때, 개발자에게 의존관계 주입이 완료되었다는 것을 알려주기 위해서 스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공합니다. 또한 스프링은 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 줍니다. Q. 객체를 생성하면서 의존관계를 주입하면 안 되나요? 생성자는 필수 정보(파라미터)를 받고, 메모리를 할당해서 객체를 생성하는 책임을 가집니다. 반면에 초기화는 이렇게..

    [spring] 싱글톤 컨테이너

    본 포스팅은 김영한 님의 스프링 핵심원리 기본편 강의 섹션 5를 듣고 요약한 내용입니다. 1. 싱글톤 컨테이너 스프링 컨테이너는 스프링 빈을 이용하여 싱글톤 패턴의 문제점을 해결하면서, 객체 인스턴스를 싱글톤(1개만 생성)으로 관리합니다. 싱글톤 패턴과 문제점은 아래 포스팅을 참고하세요. [spring] 싱글톤 패턴 본 포스팅은 김영한 님의 스프링 핵심원리 기본편 강의 섹션 5를 듣고 요약한 내용입니다. 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리 toki0411.tistory.com 스프링 컨테이너는 싱글턴 패턴을 따로 적용하지 않아도, 객체 인스턴스를 싱글톤으로 관리합니다. (싱글톤 컨테이너 역할을 합니다.) 따라서, 스프링 컨테이너는 싱글턴..

    [spring] 싱글톤 패턴

    본 포스팅은 김영한 님의 스프링 핵심원리 기본편 강의 섹션 5를 듣고 요약한 내용입니다. 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 1. 스프링 없는 순수한 DI 컨테이너 기존의 순수한 자바코드로 작성한 DI컨테이너에서는 클라이언트에서 객체를 호출할 때마다 새로운 객체를 생성해왔습니다. 다음 예제를 통해 확인해보겠습니다. package hello.core.singleton; import hello.core.AppConfig; import hello.core.member.MemberService; import org.junit.j..

    [spring] 생성자 주입(1)

    본 포스팅은 김영한 님의 스프링 핵심원리 기본편 강의 섹션 3을 듣고 요약한 내용입니다. 1. 기존코드의 문제점 먼저 예제를 하나 만들겠습니다. 무조건 1000원을 할인해주는 FixDiscountPolicy와 구매 금액에 따라 10%를 할인해주는 RateDiscountPolicy가 있다고 하겠습니다. 대충 FixDiscountPolicy는 이런식으로 구현이 될 것입니다. package hello.core.discount; import hello.core.member.Grade; import hello.core.member.Member; public class FixDiscountPolicy implements DiscountPolicy { private int discountFixAmount = 1000..