Spring Batch Example - Spring Batch란? 많은 엔터프라이즈 에플리케이션에서 대량의 작업들을 한번에 일과적으로 처리를 할필요가 있다. 배치 작업들은 유저에 처리 없이 자동화되어 많은 양의 작업들이 한번에 처리되는것을 의미한다. 이러한 배치성 작업들은 대부분 시간 기반 이벤트(주기적인 시간다, 알림처리 등)들이다. 배치 어플리케이션으로 주기적으로 외부또는 내부로부터 받은 데이터를 형식화하고 검증하여 여러 기록 시스템에서 그 형식에 맞는 트랜잭션 방법으로 작업을 처리한다. 이렇듯 배치처리는 하루에 수백만건의 작업들을 처리하기위해 사용되어진다. 스프링 배치는 가볍고 종홥적고 일상적인 엔터프라이즈 시스템들에서 튼튼한 배치를 처리하기위해 설계되어졌다. 스프링배치는 스케줄링 프레임워크는 아..
Step-06 : 주문하기 기능 구현하기 - 1 지금까지 유저에 대한 회원가입에 대한 로직과 테스트 코드를 작성했습니다. 이번 장부터 online-book-store에 핵심 기능인 주문하기 기능을 만들어보겠습니다. 또한 Spring 부트 버전을 기존 1.5.9 -> 2.1.0으로 올리겠습니다. 목차 책, 주문 도메인 정의하기 책 도메인 정의하기 주문 도메인 정의하기 벨류와 엔터티 구별하기 엔터티란 벨류 타입란 Book생성 API 만들기 setter 사용하지 않기 Book생성 API호출 책, 주문 도메인 정의하기 책 도메인 정의하기 먼저 주문하기 기능을 구현하기 전에 처음 설계했던 도메인 설계를 다시 봐보겠습니다. 위에 도메인 설계에서 볼 수 있듯이 회원이 주문을 하기 위해서는 책 데이터가 필요합니다. 그..
HandlerMethodArgumentResolver 인터페이스를 이용한 Controller 커스텀 파라미터 객체 만들기 이 인스터페이스는 전략 패턴의 일종으로 컨트롤러 메서드에서 특정 조건에 해당하는 파라미터에 바인딩 해주는 전략 인터페이스이다. 따라서 AOP로 모든 메서드를 일일이 찾아서 데이터를 바인딩 할 필요없이 어노테이션을 만들어 쉽게 바인딩 할 수 있다. 예를 들어 컨트롤러에서 세션을 조회해야 하거나 HttpServletRequest에서 토큰 또는 쿠키 정보를 기반으로 인증 객체를 만들어야 한다고 가정해보자. 그렇게 되면 이러한 객체를 만들기 위해서는 아래의 소스같이 session에서 유저정보를 가져오거나 request 정보에서 인증정보를 가져오는 중복 코드가 발생할 수 있다. 이러한 문제를 ..
JPA 관계 설정 JPA 관계 설정 JPA 관계 설정이란 단방향 연관관계 매핑 일대다 단방향[1:N] 일대다 단방향[1:N] 예제 다대일 단방향[N:1] 다대일 단방향[N:1] 예제 다대일 양방향[N:1] 다대일 양방향[N:1] 예제 편의 메소드 다대다(N:N) 양방향 다대다(N:N) 양방향 예제 다대다 연관관계 정리 마치며 JPA 관계 설정이란 엔터티 또는 도메인들은 각각 관계를 맺고 있습니다. 예를 들어 유저는 여러 개의 제품을 주문할 수 있다고 하면 유저 엔터티는 주문 엔터티와 관계를 갖습니다. 또 주문 엔터티는 어떠한 제품이 주문됐는지 알아야 하기 때문에 제품엔터티와 관계를 맺습니다. JPA에서 관계 설정을 하게 되면 알아서 객체에서는 참조를 사용해서 관계를 맺고 테이블은 외래 키를 통해 관계를 ..
서블릿 컨테이너, 스프링부트 동작 과정 autoauto- 서블릿 컨테이너, 스프링부트 동작 과정auto- 서블릿 컨테이너auto- 서블릿 구현auto - Servletauto - GenericServletauto - HttpServletauto - 서블릿 실행순서auto- Spring boot와 Servletauto - 스프링 부트 실행과정auto - 클라이언트 요청으로부터 DispatchServlet의 전체 흐름auto - Application contextautoauto 톰켓 즉 서블릿 컨테이너에 의해 개발자가 정의한 프로그램들이 실행되고, 더 나아가 스프링 부트는 어떻게 실행될까 해서 글을 정리하게 되었습니다. 서블릿 컨테이너 먼저 서블릿컨테이너를 정의하면 다음과 같을 수 있다. 서블릿 컨테이너는 ..
정규식 / 정규표현식 (Regular Expressions; Regex) 정규표현식은 문자열을 처리하는 방법 중의 하나로 특정한 조건의 문자를 '검색'하거나 '치환'하는 과정을 매우 간편하게 처리 할 수 있도록 하는 수단이다. matches (일치하는지 확인) replace(패턴에 맞는 값을 새로운 값으로 치환) Matcher, Pattern, find(), group() find(), group() (패턴에 맞는 값 1개씩 찾아내기) find(), group() (패턴에 맞는 값 모두 찾아내기) 대표적인 정규표현식 표현식 설명 ^ 문자열의 시작 ([]대괄호 안에서는 부정을 의미한다.) $ 문자열의 종료 . 임의의 한 문자 (문자의 종류 가리지 않음) * 앞 문자가 없을 수도..
Step-05 : 테스트 코드 작성하기 목차 온라인 서점 API 만들기로 살펴보는 Spring Boot OOP 5 Step-05 : 테스트 코드 작성하기 목차 테스트 코드의 필요성 Test code 작성 방법 Junit Mockito Unit Test(단위 테스트) 컨트롤러 테스트(예제) 서비스 테스트(예제) 4. Integration Test(통합 테스트) 통합테스트 예제 @RunWith(SpringRunner.class) @SpringBootTest MockMvc 사용하기 TDD 5. 마무리하며 테스트 코드의 필요성 회원가입 기능을 완성했지만 기능을 테스트하기 위해서는 Postman이나 Swagger로 테스트를 하거나 프론트엔드 화면을 구성해서 테스트를 해야 합니다. 기능 테스트 하나를 해야 하더라도..
Step-04 회원가입 Service 만들기 : 응용영역 효율적으로 관리하기 - Part2 응용 영역(서비스) 이번 단계는 응용영역 효율적으로 관리하기 - Part2 편으로 어떻게 하면 응용영역을 응집력 있고, 변경에 유연하고, 가독성 좋은 코드를 작성할지에 대해 알아볼 것입니다. 이장에서는 크게 아래와 같은 주제로 응용영역을 효율적으로 관리하는 방법에 대해 알아보겠습니다. 책임 도메인 HelperService 만들기 DTO 사용하기 최종적인 회원가입 코드 Swagger를 통한 회원 가입 API CALL 4. 책임(단일책임원칙) 객체지향 설계를 하는 데 있어 기준을 잡아주는 원칙들이 있는데 이것을 SOLID 원칙이라고 합니다. 이중 먼저 단일 책임 원칙에 대한 내용을 얘기하려고 합니다. 단일 책임 원칙은..
- Total
- Today
- Yesterday
- jenkins #mac방화벽
- Chache
- SSH
- HMAC
- https
- kotlin
- JPA
- Collection
- eslint
- OS
- Gradle
- network
- Infra
- vue
- OAuth
- IntelliJ
- javascript
- Spring
- java
- #linux
- Jenkins
- batch
- Angular
- Quasar
- aws
- Linux
- Github
- tobi
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |