어노테이션 설명 @Getter / @Setter 코드를 컴파일할 때 속성들에 대한 Getter/Setter 메소드 생성 @ToString toString() 메소드 생성 @ToString(exclude={"변수명"}) 원하지 않는 속성을 제외한 toString() 메소드 생성 @NonNull 해당 변수가 null 체크. NullPointerException 예외 발생 @EqualsAndHashCode equals()와 HashCode() 메소드 생성 @Builder 빌더 패턴을 이용한 객체 생성 @NoArgsConstructor 파라미터가 없는 기본 생성자 생성 @AllArgsConstructor 모든 속성에 대한 생성자 생성 @RequiredArgsConstructor 초기회되지 않은 Final, @N..

의존성 주입 [DI(Dependency Injection)] & 제어의 역전[IoC(Inversion of Control)] 👉 IoC(Inversion of Control : 제어의 역전) - 애플리케이션의 전체 동작 방식을 구성하기 위해 구현 객체를 생성, 연결하는 별도의 설정 클래스인 AppConfig가 있다고 하자. - 위 그림과 같이 OrderServiceImpl은 필요한 인터페이스(DiscountPolicy)들을 AppConfig로 부터 호출하지만 어떻게 생성 될지는 알 수 없다. 메소드가 실행 됬을때 제어흐름도 AppConfig 가 들고 있던걸 실행하는것이기 때문에 프로그램의 제어 흐름에 대한 모든 권한도 AppConfig가 가지고 있다. 다쓰면 객체도 반납한다. - 이처럼 프로그램의 제어 ..

Annotation의 종류 Built-in Annotation : 자바에서 기본적으로 제공하는 어노테이션 (ex. @**Override)** Meta Annotation : 커스텀 어노테이션을 만들수 있게 제공된 어노테이션. (ex. **@Target)** Custom Annotation : 사용자가 직접 정의한 어노테이션 (java 외 spring, junit 등.. 모두 포함) (ex. **@Test)** Annotation 만들기 Meta Annotation 을 사용해서 만든다. @Target 말 그대로 어노테이션의 타겟을 지정하는 것입니다. FIELD : 해당 어노테이션을 Feild에 붙일때 METHOD, TYPE : Class나 Enum 등의 어떤 대상을 위한 어노테이션인지 타입에 붙일 때 그외..
빈(Bean) - 애플리케이션에서 빈(Bean)이라는 이름으로 객체를 미리 생성해놓고 돌려쓰는것을 얘기한다. (한번만 생성하고 쓰레드들이 다같이 쓴다. = 싱글톤) 즉, 스프링앱에 여러 번 빈을 요청하더라도 매번 동일한 객체를 돌려준다는 것이다. (스프링이 빈을 관리한다.) 이유 : 애플리케이션 컨텍스트(컨테이너) 가 싱글톤으로 빈을 관리하는 이유는 대규모 트래픽을 처리할 수 있도록 하기 위함. (메모리는 한정적이기 때문) 컴포넌트(Component) : 개발자가 직접 작성한 Class를 Bean으로 등록한 것 (Bean 과 동일하게 한번만 생성하고 쓰레드들이 다같이 쓰게 하려고) **@Component** 는 개발자가 지금 개발중인 직접 컨트롤이 가능한 클래스들의 경우 Bean으로 등록하기 위해 사용된..
유의사항 Entity를 그대로 반환하지 말고, DTO에 담아서 반환해주세요! 프론트엔드와 백엔드가 느슨하게 결합하는 환경이 ”최근에는” 더 일반적이라고 말씀드렸죠? 앞으로 남은 강의 예제와 실습에서는 html/css/js 즉 뷰도 같이 반환 하겠지만, 과제에는 여러분들이 서버 로직에 더 집중하실 수 있도록 JSON을 반환하는 API형태로 진행하려고 합니다. 눈으로 직접 확인 할 수 있었던 view와는 다르게, 여러분들이 과제를 진행하시려면 서버가 반환하는 결과값을 더 쉽게 확인 하실 수 있는 도구가 필요합니다. 바로 PostMan 입니다. 사용법은 아래 페이지에서 꼭 확인해주세요! 수행해야 하는 내용 아래의 요구사항을 기반으로 Use Case 그려보기 손으로 그려도 됩니다. cf. https://naru..
# DTO는 Data Transfer Objection이다. # Entity는 핵심이고, Dto는 조수같은 느낌이다. # Dto는 계층간의 Data를 전달할 수 있는 Data 바구니 같은 것. Entity는 (이 서비스의) 핵심 요소. # 그래서 일단, 역할의 중요도 자체가 아예 다르다. # 모든 서비스는 Entity 중심으로 돌아가고, Dto는 단지 계층 간의 Data를 주고받을 수 있게 해주는 보조 장치 # Dto는 계층을 이어주는 친구다. # 한 서비스는 Controller - Service - Repository 로 이어지긴 하지만, 각 계층은 원래 독립된 존재. 서로 의존하면 안 된다. # 이 말은 어떤 서비스가 운영될 때, 이전 서비스에서 뱉은 것을 기반으로 다음 걸 만들면 안된다는 뜻. # ..
redirect: - URL로 리다이렉트 (리다이렉트는 완전히 새로운 URL로 요청이 된다.) forward: - URL로 포워드 (포워드는 기존 요청 값들이 유지된 상태로 URL이 전환된다.) 모듈 : 소프트웨어 설계에서 기능단위로 분해하고 추상화 되어 재사용 및 공유 가능한 수준으로 만들어진 단위 모듈화 : 소프트웨어의 성능을 향상시키거나 시스템의 디버깅, 시험, 통합 및 수정을 용이하도록 하는 소프트웨어 설계 기법 1. 일반적으로 모듈 이란? 보다 작고 이해할 수 있는 단위로 나뉘어진 것 본체에서 분리되어 작은 부분으로 유기적으로 구성되어 있다가, 필요할 때 본체에 합류하여 그 기능을 수행할 수 있는 것 통상, 그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체로 봄 2. 문제를 다룰 때 ..
인증 : Authentication 인가 : Authorization 참고도서 : 스프링 부트 핵심 가이드(장정우 저) JWT (JSON Web Token) : 당사자 간에 정보를 JSON 현태로 안전하게 전송하기 위한 토큰 - JWT는 URL로 이용할 수 있는 문자열로만 구성되어 있으며, 디지털 서명이 적용되어 있어 신뢰할 수 있다. - JWT는 주로 서버와의 통신에서 권한 인가를 위해 사용한다. - URL에서 사용할 수 있는 문자열로만 구성되어 있기 때문에 HTTP 구성요소 어디든 위치할 수 있다. JWT의 구조 헤더(Header) 내용(Payload) 서명(Signature) 헤더에는 검증과 관련된 내용이 담겨 있다. 두 가지 정보가 포함되어 있는데, alg와 typ 속성이다. 1) alg에서는 해..