Develop/java,spring 15

DDD Start (Domain-Driven Design) 도메인 주도 설계

계층(아키텍처) 구성 계층(Layer) 설명 사용자 인터페이스(UI), 표현(Presentation) 요청을 처리하고 사용자에게 정보를 보여준다. (Controller) 응용(Application) 요청한 기능을 도메인 계층을 조합해서 기능을 실행한다. 업무 로직은 도메인 계층에서 구현한다. (Service) 도메인 시스템에 제공할 도메인 규칙을 구현한다. (Aggregate, Entity) 인프라스트럭쳐(Infrastructure) 데이터베이스나 메세징 시스템 같은 외부시스템과 연동한다. (JPA, Message Queue, External API) 계층 구조는 그 특성상 상위 계층에서 하위 계층으로의 의존만 존개하고 하위 계층은 상위 계층에 의존하지 않는다. 표현계층은 응용계층에 의존하고 응용 계층이..

Develop/java,spring 2020.12.29

Rest, Restful, Restful API 차이

Rest란? 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반에 대한 소프트웨어 아키텍처로 자원지향구조(ROA: Resource Oriented Architecture)이다. HTTP Method, Status Code를 용도에 맞게 써야하며 6가지 제약 조건이 있다. - 클라이언트/서버 구조 : 일관적인 인터페이스로 분리되어야 한다 서버는 API제공과 제공한 API를 이용해 비즈니스 로직을 처리하거나 저장하는 역할 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인 정보) 등을 관리하는 역할 - 무상태(Stateless) : 각 요청 간 클라이언트의 콘텍스트가 서버에 저장되어서는 안되며 통신에는 상태가 없어야하고 필요한 모든 정보는 요청에 담고있어야 한다. - 캐시 처리 가능(Cacheable) ..

Develop/java,spring 2020.12.29

JWT(Json Web Token) 이란?

JSON Web Token (JWT) 은 웹표준 (RFC 7519) 으로서 두 개체에서 JSON 객체를 사용하여 가볍고 자가수용적인 (self-contained) 방식으로 정보를 안전성 있게 전달해준다. Base 64로 인코딩시 = 문자가 나올때가 있는데 URL safe 하지 않으므로 삭제 해야한다. 삭제해도 디코딩은 정상적으로 수행된다. JWT - JSON Web Token 으로 토큰의 형태이다. Cookie - 사용자 컴퓨터에 방문 기록, 로그인 정보 등과 같은 데이터를 기록할 수 있는 작은 파일 형태를 나타낸다. XSS - Cross Site Scripting 으로 사용자의 정보(쿠키, 세션)를 탈취하는 것이 목적인 공격 기법이다.(document.cookie를 사용한 정보 탈취) CSRF - Cr..

Develop/java,spring 2020.12.15

git 명령어

git 구성 git은 아래와 같은 구조로 구성이 되어있다. 기존에 git repository의 기본 브랜치는 master 브랜치였지만 whitelist/blacklist(인종차별), master/slave(주종관계) 의 의미를 담고있는 용어를 제거하기로 결정되어서 현재 기본 브랜치는 main 브랜치로 변경이 되었다. .git : git 디렉토리(히스토리) 관리가 된다. .gitignore : git commit시 ignore 지정 (*.txt, build/ 등) working directory : 작업할 파일을 관리, git add 명령어를 통해 staging area 로 옮길 수 있다. untracked : 트래킹 되지 않는 버전 tracked : 트래킹 된 버전 staging area : 버전 히스토..

Develop/java,spring 2020.12.01

Okta(옥타) SSO(OIDC - Open ID Connect Application) 로그인

Okta SSO 로그인을 위한 튜토리얼이다. Okta(옥타) 계정 및 Application 생성 Okta 를 사용하기 위해 계정 및 어플리케이션 설정을 해준다. OKTA 사이트 -> SignUp 버튼 클릭 -> 이름, 이메일등 정보 입력 후 이메일 인증을 진행한다. Home Secure, scalable, and highly available authentication and user management for any app. developer.okta.com 회원 가입 후 Okta 개발자 사이트 로그인을 하게 되면 Applications, API 등을 설정을 할수 있는 메뉴들이 표시되고 대쉬보드가 표시된다. Application은 최대 5개까지 무료로 사용할 수있다. Applications 추가를 위해..

Develop/java,spring 2020.11.30

Java Stream GroupingBy 사용

JAVA에서 Stream의 GroupingBy 사용하는 몇가지 예제이다. GroupingBy 예제를 위한 Fruit Class public class Fruit { private final int id; private final String name; private final int quantity; private final BigDecimal price; public Fruit(final int id, final String name, final int quantity, final BigDecimal price) { this.id = id; this.name = name; this.quantity = quantity; this.price = price; } public int getId() { retu..

Develop/java,spring 2020.11.26

JAVA var 키워드

var 키워드 JAVA 10 에서 var 키워드가 추가되었다. JEP 286 : Local-Variable Type Inference (지역 변수 유형 추론)에 따라 만들어 졌다. var는 키워드 처럼 보이지만 실은 키워드가 아니다. var는 타입의 이름이다. var var = "a"; 키워드가 아니기 때문에 위와 같은 코드도 정상적으로 작동을 한다. 즉, 변수, 메서드 또는 패키지 이름으로 var를 사용하는 코드는 영향을 받지 않는다. var 키워드는 지역 변수 유형 추론을 허용한다. 즉, 컴파일러가 지역 변수의 유형을 추론한다. var가 출현하게된 이유 JAVA 8이 출시되고 람다에서 타입 추론(type inference)을 할 수 있었다. BinaryOperator add = (x, y)-> x +..

Develop/java,spring 2020.11.18

JPA 순환 참조 해결 방법

JPA Entity 양방향 참조시 toString()을 호출할 때 property들을 매핑하는 과정에서 순환 참조가 일어나게 되는 문제가 있다. 이를 해결하기 위한 방법으로 몇가지 있으며 @JsonManagedReference @JsonBackReference 혹은 응답 DTO를 생성하는 방법이 좋은 방법이다. @JsonManagedReference @JsonBackReference 부모 클래스에 @JsonManagedReference, 자식측에 @JsonBackReference 어노테이션을 추가하면 된다. 응답 DTO 정의 응답을 위한 객체를 생성해서 응답을 준다. @JsonIgnore Json 데이터에 해당 데이터가 null 로 셋팅이 된다. @ToString exclude 사용

Develop/java,spring 2020.11.17