일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Docker
- java
- 롬복
- 정보처리기사
- aws
- 정처기공부
- CICD
- Groovy문법
- 정처기
- controller
- 완전탐색알고리즘
- Java8
- 프로그래머스
- 빌드스크립트
- 어노테이션
- 정보처리기사필기
- git
- spring
- 생성자
- 롬북
- PULL방식아키텍쳐
- 무중단배포
- 롬복사용시주의할점
- 정처기필기
- API
- 자바
- 빌드자동화도구
- 알고리즘
- 서버
- 시계열디비
- Today
- Total
목록우당탕당 개발일지 (47)
우당탕탕 개발일지
트랜잭션(Transaction) 트랜잭션은 여러작업들을 하나로 묶는 단위로써 한 덩어리의 작업들은 모두 실행되거나, 모두 실행되지 않는다. 트랜잭션의 구성은 @Configuration, XML 기반 설정 말고도 애노테이션 기반으로 많이 사용한다. 애노테이션 방식은 선언적 트랜잭션 이라고 불린다. 트랜잭션 선언 시 해당 기능이 적용된 Proxy(프록시) 객체가 생성된다. 이렇게 생성된 프록시 객체는 @Transactional이 적용된 메소드가 호출될 경우, PlatformTransactionManager를 사용하여 트랜잭션을 시작하고, 정상 여부에 따라 Commit/Rollback 동작을 수행한다. 정리하면, 트랜잭션 처리를 JDK Dynamic Proxy 객체에게 위임하고 AOP를 통해 트랜잭션 처리 코..
게시판 만들기 구현 중 jwt를 이용해 토큰을 발급받고 이 토큰을 Spring Security로 인증 과정을 거쳐 권한이 있는 사용자만 API를 사용할 수 있게 구현하도록 만들었다. 이 때 사용한 jwtTockenFilter는 아래의 코드와 같다. ( 📃 OncePerRequestFilter 는 요청이 들어 올 때마다 해당 필터로 인증 과정을 거치게 하는 인터페이스이다. ) 이 때 인증과정에서 실패하거나 인증헤더(Authorization)를 보내지 않게되는 경우 401(UnAuthorized)라는 응답값을 받게 된다. 이를 처리해주는 로직이 바로 AuthenticationEntryPoint라는 인터페이스인데 이 인터페이스를 커스텀하여 원하는 응답값을 보여주게 하는 것이 CoustomAuthenticati..
CICD란? 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제를 해결하기 위한 솔루션 CI (Continuous Integration : 지속적인 통합) - 빌드, 테스트 자동화 과정 - 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결 할 수 있음 CD (Continuous Deployment : 지속적인 배포) - Continuous Delivery : 지속적인 서비스 제공 -..
애플리케이션의 인증, 인가 등의 보안 기능을 제공하는 스프링 하위 프레임워크 보안 관련 된 많은 기능들을 제공하기 때문에 편리하게 원하는 기능을 설계할 수 있음 🌈 Spring Security 적용 흐름 스프링 시큐리티는 인증과 권한에 대한 부분을 Filter 흐름에 따라 처리하고 있음 Filter는 Dispatcher Servlet으로 가기 전에 적용되므로 가장 먼저 URL 요청을 받지만, Interceptor는 Dispatcher와 Controller 사이에 위치한다는 점에서 적용 시기의 차이가 있다. 1. 사용자가 로그인 정보와 함께 인증 요청한다. 2. AuthenticationFilter가 요청을 가로채고, 가로챈 정보를 통해 UsernamePasswordAuthenticationToken의 인..
전역적으로 예외를 핸들링할 수 있는 어노테이션 전 계층에서 발생한 예외를 한 곳에서 관리하고 처리할 수 있게 도와주는 어노테이션 Custom Exception을 정의하여 사용 할 수 있음 @ControllerAdvice , @RestControllerAdvice 의 차이점 두 어노테이션의 차이는 @Controller 와 @RestController의 차이점과 동일 @RestController 는 @ResponseBody가 포함되어 있어 응답을 JSON 형식으로 내려줌 @ExceptionHandler 란? @ControllerAdvice, @RestControllerAdvice와 함께 사용되어지는 어노테이션 위 어노테이션이 적용된 Bean 내에서 발생한 예외를 받아 처리할 수 있는 기능 value 값을 가..
게시판 만들기 중 댓글 작성 기능을 구현하고 있는데 아래와 같은 에러가 발생했다. Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance ofcs 어디가 문제인지 확인하기 위해 로그를 남겨보았는데,Controller에 남긴 log 부터 아예 남겨지지 않았다. 123456@PostMapping("/{postsId}/comments")public ResponseCommentCreateResponse> createComment(@PathVariable Long postsId, @RequestBody CommentCreateRequest comment..
페이징(Pagingation) 기본적으로 게시판에서 작성된 포스트를 한 페이지에 모두 보여주기 보다 페이지를 나누어 쪽수별로 제공한다. 게시판의 포스트 뿐만 아니라 포스트에 작성 된 댓글이나 블로그 등도 마찬가지로 페이징처리를 하여 효과적으로 정보를 제공 한다. 이러한 페이징을 개발하기 위해 개발자가 직접 페이지 관련 쿼리를 파라미터로 받아 처리하는 방법도 있지만, JPA에서 제공하는 Pageable 객체를 사용하게 되면 보다 쉽게 페이징 처리를 할 수 있다. Pageable 사용 1 2 3 4 5 // 댓글 조회 @GetMapping("/{postId}/comments") public Response listComment(@PathVariable Long postId, Pageable pageable)..
ResponseEntity는 HttpEntity를 상속받는다. 데이터의 결과 값과 HTTP 상태 코드를 개발자가 제어할 수 있는 클래스이다. 클라이언트의 요청에 대한 응답 데이터가 포함되어있다. ResponseEntity에는 HttpStatus, HttpHeaders, HttpBody 를 포함한다. 상태코드, 헤더값, 결과값 등의 데이터를 프론트엔드에게 넘겨줄 수 있고, 에러코드도 자세히 설정해서 전달할 수 있다. 📌 ResponseEntity 구조 HttpEntity에서 상속받은 status, headers, body를 매개변수로 받는다. status : 상태 코드를 제어하여 넘김 http 상태 코드 headers : 요청/응답에 대한 요구사항 포함 body : 결과에 대한 값 포함 body와 head..