본문 바로가기
반응형

스프링부트68

[Spring Boot] : 타입 컨버터 - Converter 타입 컨버터를 사용하려면 org.springframework.core.convert.converter.Converter 의 인터페이스를 구현하면 되는데 Converter라는 인터페이스가 많아 조심해야 한다. 강의에서 간단하게 숫자와 문자를 서로 변환할 수 있는 두 개의 컨버터를 코딩했다. @Slf4j public class StringToIntegerConverter implements Converter { @Override public Integer convert(String source) { log.info("converter source={}", source); return Integer.valueOf(source); } 문자를 숫자로 만드는 컨버터이다. Integer.valueOf()를 사용해 변.. 2022. 3. 14.
[TIL] : 136 일일 배움을 위한 Today I Learned ! R R언어의 기초를 공부하고 있다. 데이터 단위나, 벡터에 대해 공부하고 있다. 지금은 데이터 프레임 부분을 실습해 봐야 한다. 2022.03.11 - [프로그래밍언어/R] - [R] : 표로 데이터 정리하기 2022.03.11 - [프로그래밍언어/R] - [R] : 데이터 프레임 다루기(1) Spring Boot 예외 처리 컨트롤러를 분리하는 것을 실습했다. 2022.03.11 - [Framework/Spring Boot] - [Spring Boot] : @ControllerAdvice실습 공부 2022. 3. 11.
[Spring Boot] : @ExceptionHandler 사용해 보기(2) @ExceptionHandler 사용해 보기(2) @Data @AllArgsConstructor public class ErrorResult { private String code; private String message; } 예외가 발생했을 때 API 응답으로 사용하는 객체를 정의한다. @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler(IllegalArgumentException.class) public ErrorResult illegalExHandler(IllegalArgumentException e) { log.error("[exceptionHandler] ex", e); return new ErrorResult("BAD", e.getMessa.. 2022. 3. 10.
[Spring Boot] : @ExceptionHandler 사용해 보기(1) API는 각 시스템마다 응답 양식과 스펙이 모두 다르다. 하지만 예외 상황에는 예외에 따라 각기 다른 데이터를 출력할 수 있어야 하고 같은 예외도 어떤 컨트롤러에서 발생했는지에 따라 다른 응답을 내려주는 등 세밀한 제어가 필요하다. 여러 API 예외 처리 문제를 해결하기 위해 @ExceptionHandler를 사용한다. 이 어노테이션은 ExceptionHandlerExceptionResolver라는 예외 처리 기능을 제공한다. 스프링은 ExceptionHandlerExceptionResolver를 기본 제공하고 기본 제공하는 ExceptionResolver 중에서도 우선 순위가 가장 높다. 스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 참고하여 공부하였습니다. 2022. 3. 9.
[TIL] : 133 일일 배움을 위한 Today I Learned ! Docker 도커 컴포즈와 YAML 파일 작성에 대해 공부하고 있다. 2022.03.08 - [Server & System/Docker] - [Docker] : 도커 컴포즈의 프로젝트, 서비스, 컨테이너 2022.03.08 - [Server & System/Docker] - [Docker] : YAML 파일 작성(1) MariaDB CentOS에서 MariaDB를 설치하고 셋팅해주고 클라이언트 툴을 통해 접속해 보는 실습을 진행했다. 2022.03.08 - [Data Base/MariaDB] - [MariaDB] : CentOS에서 MariaDB 설치 및 셋팅 Spring Boot 학교 수업에서 스프링 부트를 알려주면서 이론적인 부분 먼저 정리해 봤다. .. 2022. 3. 8.
[Spring Boot] : 스프링 부트 이해 스프링 부트 이해 경량 컨테이너를 사용하고 있다는 큰 특징이 있다. 자바에서는 프로그램을 사용하기 위해 메모리에 올라가야 자바 프로그램을 사용할 수 있는데 스프링도 마찬가지로 자바에서 메모리에 올려주어야지 가져다 사용할 수 있다. 톰 캣 실행하면 자동으로 메모리에 올라간다. ( 컨트롤러, 서비스, 맵퍼 ) → 이처럼 메모리에 올린 것을 스프링이 관리를 한다. AOP : 관점 지향 프로그래밍 모든 자바 파일은 자바 오브젝트를 상속 받게 되고 중간에 부모가 끼게 된다. 공통 기능은 부모에 공통 기능을 정의하고 가져다 사용하는 방식으로 구현한다. 이렇게 하는 게 객체 지향 프로그래밍 → 문제 발생 : A라는 엄마가 있을 때 자식이 4명이 있다. 엄마의 기능을 모두 다 사용하지 않고 3명만 사용하고 1명만 사용.. 2022. 3. 8.
[TIL] : 132 일일 배움을 위한 Today I Learned ! Docker 도커 컴포즈와 노드 라벨에 대해 공부했다. 이쯤 되니까 머리가 복잡하다. 2022.03.07 - [Server & System/Docker] - [Docker] : 노드 AVAILABILITY변경하기 2022.03.07 - [Server & System/Docker] - [Docker] : 노드 라벨 추가하기 2022.03.07 - [Server & System/Docker] - [Docker] : service 제약 설정 2022.03.07 - [Server & System/Docker] - [Docker] : 도커 컴포즈를 사용하는 이유 2022.03.07 - [Server & System/Docker] - [Docker] : 도커 컴포즈.. 2022. 3. 7.
[TIL] : 131 일일 배움을 위한 Today I Learned ! Docker 여러 타입의 볼륨 생성과 오버레이 네트워크에 대해 공부했다. 2022.03.06 - [Server & System/Docker] - [Docker] : 사용자 정의 오버레이 네트워크 2022.03.06 - [Server & System/Docker] - [Docker] : 서비스 디스커버리 2022.03.06 - [Server & System/Docker] - [Docker] : volume 타입의 볼륨 생성 2022.03.06 - [Server & System/Docker] - [Docker] : bind 타입의 볼륨 생성 2022.03.06 - [Server & System/Docker] - [Docker] : 스웜 모드에서 볼륨의 한계점.. 2022. 3. 6.
[Spring Boot] : ExceptionResolver 사용하기(1) ExceptionResolver 사용하기(1) 스프링 부트가 기본적으로 제공하는 ExceptionResolver는 HandlerExceptionResolverComposite에 ExceptionHandlerExceptionResolver → ResponseStatusExceptionResolver → DefaultHandlerExceptionResolver 순으로 등록된다. ExceptionHandlerExceptionResolver는 @ExcpetionHandler을 처리한다. ResponseStatusExceptionResolver는 HTTP 상태 코드를 지정한다. DefaultHandlerExceptionResolver는 스프링 내부 기본 예외츨 처리한다. @ResponseStatus(code = .. 2022. 3. 6.
[TIL] : 130 일일 배움을 위한 Today I Learned ! Spring Boot API 예외처리 중 HandlerExceptionResolver에 대해 조금 더 공부했다. 2022.03.05 - [Framework/Spring Boot] - [Spring Boot] : HandlerExceptionResolver 활용하기 Docker 도커 스터디 진도에 맞춰 공부를 진행했다. 2022.03.05 - [Server & System/Docker] - [Docker] : config 사용하기 2022.03.05 - [Server & System/Docker] - [Docker] : 도커 스웜 네트워크 2022.03.05 - [Server & System/Docker] - [Docker] : ingress 네트워크 20.. 2022. 3. 5.
[Spring Boot] : HandlerExceptionResolver 활용하기 HandlerExceptionResolver 활용하기 예외 발생 → WAS → 오류 페이지 찾는다 → 다시 /error 호출 이 과정은 복잡하다. ExceptionResolver를 통해 예외가 발생했을 때 깔끔하게 해결이 가능하다. if (id.equals("user-ex")) { throw new UserException("사용자 오류"); } ApiExceptionController에 user-ex에 대한 코드를 넣어주어 호출 시 UserException이 발생하도록 했다. try { if (ex instanceof UserException) { log.info("UserException resolver to 400"); String acceptHeader = request.getHeader("acc.. 2022. 3. 5.
[TIL] : 129 일일 배움을 위한 Today I Learned ! Spring Boot API 예외처리 공부를 하고 있는 중 HandlerExceptionResolver에 대해 공부를 하게 되었다. 아직 다듬지 않아서 다음 강의에서 더 배울 것 같다. 2022.03.04 - [Framework/Spring Boot] - [Spring Boot] : HandlerExceptionResolver 시작하기 Docker 도커 스터디 진도에 맞게 공부했다. 도커 서비스에 대해 공부하기 시작했다. 2022.03.04 - [Server & System/Docker] - [Docker] : 스웜 모드 서비스 개념 2022.03.04 - [Server & System/Docker] - [Docker] : 서비스 생성하기 2022.03... 2022. 3. 4.
[Spring Boot] : HandlerExceptionResolver 시작하기 HandlerExceptionResolver 시작하기 IllegalArgumentException을 처리하지 못 해 컨트롤러 밖으로 넘어가는 일이 생길 때 HTTP 상태 코드를 400으로 처리하고 싶다고 가정하고 실습을 진행했다. if (id.equals("bad")) { throw new IllegalArgumentException("잘못된 입력 값"); } 먼저 ApiExceptionController를 수정해 주었다. HandlerExceptionResolver를 사용하면 컨트롤러 밖으로 던져진 예외를 해결하고 동작 방식을 변경할 수 있따. 줄여서 ExceptionResolver라고 부른다. @Slf4j public class MyHandlerExceptionResolver implements Ha.. 2022. 3. 4.
[TIL] : 126 일일 배움을 위한 Today I Learned ! Spring Boot 오류 페이지 마지막 챕터를 공부했다. 2022.03.01 - [Framework/Spring Boot] - [Spring Boot] : BasicErrorController가 model에 담는 정보 Docker 각종 드라이버 사용법에 대해 공부하고 이제 도커 데몬 디버그를 공부할 예정이다. 2022.03.01 - [Server & System/Docker] - [Docker] : Devicemapper 드라이버 사용하기 2022.03.01 - [Server & System/Docker] - [Docker] : ZFS 드라이버 사용하기 2022.03.01 - [Server & System/Docker] - [Docker] : 컨테이너 .. 2022. 3. 1.
[Spring Boot] : BasicErrorController가 model에 담는 정보 BasicErrorController는 여러 정보를 model에 담아 뷰에 전달하는데 뷰 템플릿에서 출력해서 확인해 볼 수 있다. 이런 정보는 고객에게 굳이 보여 줄 필요도 없고 해커가 이런 라이브러리를 사용하구나? 이런 라이브러리의 취약점은 이거지! 하고 공격 할 수도 있어서 더욱 보여 줄 필요가 없다. server.error.include-exception=true server.error.include-message=on_param server.error.include-stacktrace=on_param server.error.include-binding-errors=on_param application.properties에서 이런 설정을 통해 보이고, 안 보이고, 조건에 따라 보이고 등을 설정할 수.. 2022. 3. 1.
[Spring Boot] : Servlet Exception, 서블릿 예외 처리 시작하기 서블릿 예외 처리 시작 강의는 항상 점진적으로 발전해온 루트를 따라가기 때문에 시작 부분에서 먼저 스프링이 아닌 순수 코드를 통해 공부를 했다. 서블릿은 Exception과 response.sendError(HTTP 상태 코드, 오류 메시지) 이 두 방식으로 예외 처리를 한다. 내부에서 오류가 발생하면 500으로 Exception을 사용하고 그게 아니라 직접 뭔가 담아서 처리하고 싶으면 response.sendError에 담아 처리하면 된다. @GetMapping("/error-ex") public void errorEx() { throw new RuntimeException("예외 발생!"); } @GetMapping("/error-404") public void error404(HttpServletR.. 2022. 2. 24.
[TIL] : 120 일일 배움을 위한 Today I Learned ! Docker 도커 사설 레지스트리를 사용하는 방법에 대해 공부를 했는데 도커 허브 보다 확실히 어려운 것 같다. 2022.02.23 - [Server & System/Docker] - [Docker] : Docker Private Registry, 사설 레지스트리 컨테이너 생성하기 2022.02.23 - [Server & System/Docker] - [Docker] : Docker Private Registry(, 도커 사설 레지스트리에 이미지 push하기 JavaScript 30일 챌린지 가로 스크롤을 활용해보는 프로젝트였다. 2022.02.23 - [Project/JavaScript 30일 챌린지] - [JavaScript 30일 챌린지] : 27일.. 2022. 2. 23.
[Spring Boot] : 직접 만든 세션 적용하여 로그인 처리하기 private final SessionManager sessionManager; 우선 전에 만든 sessionManager를 주입 받는다. @PostMapping("/login") public String loginV2(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletResponse response) { if (bindingResult.hasErrors()) { return "login/loginForm"; } Member loginMember = loginService.login(form.getLoginId(), form.getPassword()); if (loginMember == null) { binding.. 2022. 2. 21.
[TIL] : 108 일일 배움을 위한 Today I Learned ! Spring Boot 김영한님 스프링 부트 강의를 오늘도 들었다. 어제 듣고 남은 한 섹션을 모두 다 들었고 내일부터는 또 다음 섹션을 나갈 예정이다. 2022.02.11 - [Framework/Spring Boot] - [Spring Boot] : 오류 코드와 메시지 처리(1) 2022.02.11 - [Framework/Spring Boot] - [Spring Boot] : 오류 코드와 메시지 처리(2) 2022.02.11 - [Framework/Spring Boot] - [Spring Boot] : 어떻게 오류 코드를 설계 할 것인가? 2022.02.11 - [Framework/Spring Boot] - [Spring Boot] : MessageCod.. 2022. 2. 11.
[TIL] : 104 일일 배움을 위한 Today I Learned ! Spring Boot 스프링 부트 김영한님 강의를 들으면서 코딩하고 복습하면서 노션에 기록하고 해당 내용을 블로그에 복붙으로 옮겼다. 2022.02.07 - [Framework/Spring Boot] - [Spring Boot] : 타임리프 반복문 사용 2022.02.07 - [Framework/Spring Boot] - [Spring Boot] : 타임리프 if, unless, switch문 사용 2022.02.07 - [Framework/Spring Boot] - [Spring Boot] : 주석 2022.02.07 - [Framework/Spring Boot] - [Spring Boot] : block 2022.02.07 - [Framework/Sp.. 2022. 2. 7.
[TIL] : 94 일일 배움을 위한 Today I Learned ! 알고리즘 프로그래머스 문제를 오늘도 한 문제 풀었다. 어제 풀어본 문제도 다시 풀어봤다. 2022.01.28 - [Algorithm/프로그래머스] - [프로그래머스] : 최대공약수와 최소공배수 파이썬 풀이 SpringBoot 김영한님 스프링 부트 강의를 오늘 세션 마무리하려고 한다. 강의를 듣고 코딩을 하고 난 뒤에 노션에 다시 보면서 복습 정리를 하고 블로그에 복사 붙여넣기로 올리고 있다. 오늘은 HTTP 응답과 요청에 대해 공부하고 있는 중이다. 2022.01.28 - [Framework/Spring Boot] - [Spring Boot] : HTTP, API 메시지 바디에 직접 입력해 HTTP 응답하기 2022.01.28 - [Framework/Sp.. 2022. 1. 28.
반응형