클래스를 얻는 수단 public 생성자 : 클래스의 인스턴스를 얻는 전통적인 수단 정적 팩토리 메서드 : 클래스의 인스턴스를 반환하는 정적 메서드
GET정렬 필터(검색어)POST, PUT, PATCH회원 가입, 상품 주문, 리소스 등록, 리소스 변경 등ex: 이미지, 정적 텍스트 문서조회 : GET 사용일반적으로 쿼리 파라미터 없이 리소스 경로로 단순히 조회 가능ex: 검색, 게시판 목록에서 정렬 필터(검색어)조
리소스 식별URI 계층 구조 활용회원 목록 조회 /members회원 목록 조회 /members회원 목록 조회 /members회원 목록 조회 /membersURI : 리소스만 식별하며, 행위는 식별하지 않는다.리소스 = 명사 / 행위 = 동사URI 네이밍시 참고!계층 구
HyperText Transfer Protocol거의 모든 것!HTML, TEXTIMAGE, 음성, 영상, 파일JSON, XML (API)즉,거의 모든 형태의 데이터 전송 가능서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용지금은 HTTP 시대HTTP/0.9 :
자원 식별자Locator, Name 또는 둘 다 추가로 분류될 수 있다.Uniform Resource Locator리소스가 있는 위치를 지정보통 리소스를 찾는 방법으로는 보편적으로 URL을 사용따라서, 편의상 앞으로 URI를 URL과 같은 의미로 이야기할 것임Unifo
모든 것이 HTTP 위에서 동작함! (데이터를 주고 받음)Internet Protocol지정한 IP Address(IP 주소)에 데이터 전달Packet이라는 통신 단위로 데이터 전달패킷 구조Client가 패킷을 전달하기Server가 패킷을 전달하기비연결성패킷을 받을 대
Bean Scope : 빈이 존재할 수 있는 범위 다양한 Scope Singleton 기본 스코프 스프링 컨테이너의 시작과 종료까지 유지되는, 가장 넒은 범위의 스코프 Prototype 스프링 컨테이너는 생성과 의존관계 주입가지만 관여 그 이후는 관
스프링 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기화 콜백 → 사용 → 소멸 전 콜백 → 스프링 종료스프링 빈 : 객체를 생성하고, 의존 관계 주입 후에야 필요한 데이터를 사용할 준비가 제대로 완료됨준비 완료 시점을 알려주기 위한 콜백 메서드 필요함!스
생성자 주입수정자 주입(setter 주입)필드 주입일반 메서드 주입생성자 호출시점에 딱 1번만 호출되는 것이 보장된다.불변, 필수 의존관계에 사용요즘 가장 많이 쓰임💡 중요!해당 클래스에 생성자가 딱 1개만 있으면 @Autowired를 생략해도 자동 주입 된다. (물
스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다.Bean 이름 : 기본설정) 클래스명을 사용하되 맨 앞글자만 소문자를 사용한다.단, 이름을 직접 설정하고 싶으면@Component("memberService2") 처럼 애너테
💡 Singleton Container가 필요한 이유?스프링 없는 순수한 DI 컨테이너 : 요청을 할 때 마다 객체를 새로 생성고객 트래픽이 초당 100이 나오면 초당 100개 객체가 생성 / 소멸 : 메모리 낭비👉🏻 해결방안 : 해당 객체가 딱 1개만 생성되고,
API 문서 API를 쓸모 있게 하려면 문서를 잘 작성해야 함 사람이 직접 작성하려면 코드가 수정될 때마다 매번 함께 수정해줘야 함 Javadoc Javadoc(자바독): API 문서 수정 등을 사람 대신 해줄 수 있는 자바의 유틸리티 소스코드 파일에서 문서화 주석(
스프링 컨테이너ApplicationContext : 스프링 컨테이너@Configuration을 설정(구성) 정보로 사용@Bean이라 적힌 메서드를 모두 호출해서, 반환된 객체를 스프링 컨테이너에 등록한다. 이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라고 한다.스
제어의 역전Spring에만 국한된 용어는 아님프로그램의 제어 흐름을 직접 제어하는 것이 아니라, 외부에서 관리하는 것ex) AppConfig가 프로그램의 제어 흐름을 가져감📌 Framework vs Library프레임워크 : 내가 작성한 코드를 제어하고, 대신 실행함
악덕 기획자 : 고정 금액 할인이 아닌, 10% 정률 할인으로 변경하고자 한다. 📣 참고 : 애자일 소프트웨어 개발 선언RateDiscountPolicy현재의 코드는 OCP, DIP를 위반하고 있다.배우는 본인의 배역을 수행하는 것에만 집중해야 한다.남배우는 어떤 여
기능 : 회원 가입, 회원 조회등급 : 일반 회원, VIP 회원 (2가지 등급)회원 데이터는 자체 DB를 구축할 수도 있고, 외부 시스템과 연동할 수도 있다. (미정)회원은 상품을 주문할 수 있다.회원 등급에 따라 할인 정책을 적용할 수 있다.모든 VIP는 1000원을
Spring의 핵심 컨셉 > 📌 Spring과 Java > - Spring : Java 언어 기반의 Framework > - Java : 객체 지향 언어라는 특징이 가장 대표적인 프로그래밍 언어 👉🏻 객체 지향 언어가 가진 강력한 특징을 살려내는 Framewo
💡 스프링 제대로 공부하는 방법단순히 스프링 기능을 배우고 사용하는 것은 어렵지 않다그러나 IoC, DI 등의 용어 및 SOLID 객체지향 설계 원칙도 이해해야 스프링의 진정한 핵심 가치를 알 수 있게 됨📌 스프링과 객체지향 프로그래밍스프링 컨테이너가 왜 필요할까?
💬 한 줄 요약null을 반환하는 API는 사용하기 어렵고, 오류 처리 코드도 늘어난다. 성능이 더 좋은 것도 아니다.다음은 컬렉션이 비었다면 null을 반환하는 코드이다.위와 같은 코드에서 만약 null값을 반환하게 된다면, 클라이언트는 이 null 상황을 처리하는
매개변수의 유효성 검사 메서드와 생성자 대부분은 입력 매개변수의 값이 특정 조건을 만족하기를 바람 제약사항은 반드시 문서화해야 함 메서드 몸체가 시작되기 전에 검사해야 함 "오류는 가능한 한 빨리 (발생한 곳에서) 잡아야 한다"는 일반 원칙 📌 제약사항은 반드시