🏷 자바 진영의 추운 겨울과 스프링의 탄생 옛날 옛적 이야기이니 편하게 듣기 !! 자바당 정파 기술 EJB : 2000년대 초반 기술, 종합 선물 세트같은 존재! : 이론은 너무 좋다 그러나 너무 비싸고 느리고 복잡하다😭 그래서 두 명의 개발자가 "이건 진짜 아
🏷 좋은 객체 지향 설계의 5가지 원칙(SOLID) 악덕 면접관에게 걸리면 면접 문제에도 나올 수 있다 😂 > SOLID : 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 1) SRP 단일 책임 원칙(single reponsibilit
🏷 프로젝트 생성 지금까지 우리가 배운대로, 역할과 구현을 나누어서(인터페이스와 구현 객체를 나누어서), 개발을 해볼 건데, (스프링의 도움 없이)순수한 JAVA로만 개발해보겠다 😉 📌 사전 준비물 Java 11 설치 IDE: IntelliJ 또는 Eclipse
이번 시간에는 저번 시간에 만들었던 회원 도메인이 정상 동작하는 지 테스트를 해볼 예정😉 > 리뷰하고 갑시다 🤚🏻 으로 바꿔보자 ! FixDiscountPolicy ➡️ RateDiscountPolicy 우리는 이제 AppConfig만 변경하면 된다 우하하하하하😆 > * ⬇️ 사용, 구성의 분리*
🏷 스프링 컨테이너 생성 스프링 컨테이너가 어떤 식으로 생성이 되는 지 알아보자! 스프링 컨테이너는 new AnnotationConfigApplicationContext 으로 객체를 생성하면서, AppConfig를 파라미터로 넘기고, 반환 값으로 applicatio
🏷 스프링 빈 조회 - 상속 관계 부모 타입을 조회하면 자식 타입도 함께 조회된다. 자바는 기본적으로 모든 최상위 부모는 Object 이다. ApplicationContextExtendsFindTest.java 생성  필드 주입 일반 메서드 주입 1️⃣ 생성자 주입 생성자를 통해 의존관계를 주입 지금까지 우리가 진행했던 방법! 생성자 호출 시점에 딱 1번
🏷 조회 빈이 2개 이상 - 문제 스프링 빈 조회에서 학습했듯이, 타입으로 조회하면 선택된 빈이 2개 이상일 때 문제가 발생한다. @Autowired 는 타입(Type)으로 조회한다. DiscountPolicy 의 하위 타입인 FixDiscountPolicy , R
🏷 빈 생명주기 콜백 시작 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 이번 시간에는 스프링을 통해 이러
🏷 빈 스코프란? 지금까지 우리는 스프링 빈이 스프링 컨테이너의 시작과 함께 생성되어서, 스프링 컨테이너가 종료될 때 까지 유지된다고 배웠다! 이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. 스코프는 번역 그대로 빈이 존재할 수 있는 범위를 뜻함
🏷 웹 스코프 🏷 request 스코프 예제 만들기 🏷 스코프와 Provider 🏷 스코프와 프록시
🏷 인터넷 통신 인터넷에서 컴퓨터 둘은 어떻게 통신할까🤔? 정보를 전달하고 받아야 하는 컴퓨터가 가까이 있으면 상관없지만, 만약 멀리있다면? 인터넷 망을 통해 보내야 함! 그러나 이 인터넷이 호락호락 하지 않음,, 중간에 수많은 노드를 거쳐 반대편까지 안전하게 전
🏷 URI 🏷 웹 브라우저 요청 흐름
🏷 모든 것이 HTTP 🏷 클라이언트 서버 구조 🏷 Stateful, Stateless 🏷 비 연결성(connectionless) 🏷 HTTP 메시지
🏷 HTTP API를 만들어보자 🏷 HTTP 메서드 - GET, POST 🏷 HTTP 메서드 - PUT, PATCH, DELETE 🏷 HTTP 메서드의 속성
🏷 클라이언트에서 서버로 데이터 전송 데이터 전달 방식은 크게 2가지로 나눌 수 있다! 1️⃣ 쿼리 파라미터를 통한 데이터 전송 GET 사용 주로 정렬 필터(검색어) 2️⃣ 메시지 바디를 통한 데이터 전송 POST PUT PATCH 사용 회원가입, 상품주문, 리소
🏷 HTTP 상태코드 소개 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 1xx (Informational): 요청이 수신되어 처리중 2xx (Successful): 요청 정상 처리 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요
🏷 HTTP 헤더 개요 HTTP 전송에 필요한 모든 부가정보를 헤더에 다 넣는다! 내용이 별 거 없군🤔 그런데! HTTP 표준이 바뀌면서 RFC723x 변화가 일어남❗️ 엔티티(Entity) ➡️ 표현(Representation) Representation =
🏷 캐시 기본 동작 ✔️ 캐시가 없을 때  HTTP 기반으로 동작하는 서버 정적 리소스, 기타 부가기능
🏷 프로젝트 생성 스프링 부트를 사용하면 환경설정도 편하고, 톰캣 서버를 내장하고 있기 때문에 일단 스프링 부트를 이용해 프로젝트를 만들지만, 거의 사용하지 않을 예정이다 ! 스프링 부트 스타터 사이트에서 프로젝트를 생성하는 부분은 이전에 여러번 다뤘기 때문에 이
지금부터 설명할 내용은 API 방식이다! (HTTP API든, Restful API든 기반이 되는 내용) 1️⃣ 단순 텍스트 2️⃣ JSON 🏷 HTTP 요청 데이터 - API 메시지 바디 - 단순 텍스트 HTTP message body에 데이터를 직접 담아서
🏷 회원 관리 웹 애플리케이션 요구사항 > ✔️ 회원 정보 이름 : username 나이 : age > ✔️ 기능 요구사항 1️⃣ 회원 저장 2️⃣ 회원 목록 조회 ✔️ 회원 도메인 모델 만들기 ✔️ 회원 저장소 만들기 ✔️ 회원 저장소 테스트코드 만들기 >
🏷 MVC 패턴 - 개요 🤷🏻♀️ 기존의 여러 문제들🤷🏻♀️ 1️⃣ 너무 많은 역할 하나의 서블릿이나 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하게 되면, 너무 많은 역할을 하게되고, 결과적으로 유지보수가 어려워진다. 2️⃣ 변경의 라이프사
이번에는 직접 MVC 프레임워크를 서블릿을 가지고 밑바닥부터 하나씩 만들어 갈 예정이다 🙂 🏷 프론트 컨트롤러 패턴 소개 ✔️ 프론트 컨트롤러 도입 전 ✔️ 프론트 컨트롤러 도입 후  상품 관리 로그 아웃 보안 요구사항 로그인 사용자만 상품에 접근하고, 관리할 수 있
🏷 서블릿 필터 - 소개 ✔️ 공통 관심 사항 요구사항을 보면 로그인 한 사용자만 상품 관리 페이지에 들어갈 수 있어야 한다. 앞에서 로그인을 하지 않은 사용자에게는 상품 관리 버튼이 보이지 않기 때문에 문제가 없어 보인다. 그런데 문제는 로그인 하지 않은 사용자
🏷 프로젝트 생성 스프링 부트 스타터 사이트로 이동해서 프로젝트 생성 ✔️ 프로젝트 선택 Project: Gradle Project Language: Java Spring Boot: 2.5.x ✔️ Project Metadata Group: hello Arti
🏷 시작 API의 경우 어떻게 예외처리를 할까❓ ➡️ 오류 페이지는 단순히 고객에게 오류 화면을 보여주고 끝이지만, API는 각 오류 상황에 맞는 오류 응답 스펙을 정하고, JSON으로 데이터를 내려주어야 한다! ✔️ 스프링 부트 기본 오류 처리 BasicEr