@ExceptionHandler특정 예외가 발생했을 때 해당 예외를 처리하는 메서드를 정의하는데 사용@ControllerAdvice와 @RestControllerAdvice 클래스 내에 정의@ControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler(ResourceNotFoundException.class) public ResponseEntity handleResourceNotFoundException(ResourceNotFoundException ex) { return new ResponseEntity(ex.getMessage(), HttpStatus.NOT_FOUND); } @ExceptionHan..
1. 정리하게된 배경초기 도메인 필드의 유효성을 검증하고자, 아래와 같이 @NonNull을 이용해서 구현했다. 초기 프로젝트 환경에서 validation 의존성이 추가되지 않아서, Spring 에서 제공되는 @NonNull이 있길래 사용했다. 클라이언트에서 입력받았을 때 해당 필드값이 비어있으면 예외를 처리가하기 위함이었는데 이에 대해 리뷰어님께 코멘트를 받았다. 해당 어노테이션에 대한 이해가 부족한 것으로 판단해서 코멘트를 주신것 같아 이번기회에 정리해보기로 했다.NonNull 과 NotNull, NotBlank 는 서로 어떤 차이가 있을까요?이들의 차이를 알아보고 적용해보는 것도 좋을거 같습니다AS-IS 코드import org.springframework.lang.NonNull;import roome..
※ 배경 설명프로젝트 : Spring 기반 방탈출 예약 시스템자바 버전 : 17스프링부트 버전 : 3.2.4스프링 버전 : 6.x데이터 저장 방식 : HashMap 기반 인메모리 예외처리 초기 예약 삭제 기능을 개발할 때, 클라이언트로부터 예약 id값을 이용해 인메모리 저장소에서 조회 후 반환하도록 로직을 구성했다.자료구조는 HashMap 이고, stream의 filter를 이용해 조건을 조회 후 List로 반환한다. 해당 로직에 대한 코드리뷰는 아래와 같은데, 조회할 id 값이 없는 경우 예외처리가 필요하다는 것을 놓쳤다. (기본적으로 유효성 검증은 필수인데 이런 부분에서 실수를 하다니... 분발해야지) id에 해당되는 원소가 존재하지 않는 경우는 어떻게 될까요? 사용자가 이를 인지할 수 있도록 해주..
이번달부터 학습 테스트로 배우는 Spring 강의를 듣고 있다. 해당 강의는 방탈출 예약 시스템 레거시 프로젝트를 리팩터링 하면서 Spring의 전반적인 기능들을 몸소 겪어볼 수 있는 강의이다.기존에 알고 있던 개발 방식외에 실무자의 개발 방식이 궁금해서 강의를 신청하기로 결심했고, 1차로 받았던 코드 리뷰에 대해 정리해보고자 한다. 1. Entity 와 Dto 의존 관계Service Layer에서 Repository 를 통해 반환한 Entity를 Controller로 반환할 때 편의성을 위해 toDto() 메서드를 만들었다.매번 Entity를 Dto로 변환하는 과정이 많기에 메서드로 작업을 최소화 하고자 했다. 이에 대하여 아래와 같이 리뷰어님의 코멘트를 받았다.Reservation 은 비즈니스 로직을..
환경구성Spring boot version: 3.2.5Java version : 17dependencies { implementation 'org.springframework.boot:spring-boot-starter-jdbc' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' // 테스트에서 lombok 사용 testCompileOnly 'org.projectlombok:lombok' testAnnotationProc..
이번 포스팅은 사이드프로젝트에서 로그인 구현에 사용한 Spring Security와 JWT 사용기에 대해 정리해보려 합니다. 1. 세션방식이 아닌 JWT(JSON Web Token)를 사용하게 된 이유현재 사이드 프로젝트는 flutter로 클라이언트 개발을 하고 있습니다. 브라우저와 달리 모바일 앱은 쿠키가 존재하지 않습니다. 따라서 별도의 암호화된 저장소를 사용해 세션을 저장해야 합니다. 이 말은 즉, 개발자가 직접 세션 관리를 해야 한다는 의미입니다. 직접 세션을 관리할 경우 코드 상 오류가 발생하기 가능성이 높다고 생각합니다. (참고 각 SharedPreferences - Android / UserDefaults - ios에 세션을 저장할 수 있습니다.)모바일 환경에서 사용자는 로그인 상태를 오랫동..
What is Spring Security? Spring Security는 애플리케이션의 보안 요구사항을 만족하기 위한 스프링 진영 보안 프레임워크 입니다. Spring Security를 이용해 인증, 권한부여, 세션관리, 암호화, CSRF 방지 등 다양한 보안 기능을 제공합니다. Core of Security 인증(Authentication) 인증은 서버에서 사용자의 신원을 확인하는 과정으로 Security는 각종 인증 메커니즘을 이용해 사용자의 신원을 확인합니다. 권한 부여(Authorization) 권한 부여는 인증된 사용자가 특정 리소스에 접근할 수 있는지 확인하는 과정으로, 사용자의 역할과 권한에 따라 서버 리소스에 대한 접근이 제한됩니다. 주요 클래스 AuthenticationManager :..
스프링 기본 개념을 정리해보고자 한다. Q1. Spring Container vs Spring Context vs IOC Container vs Application Context Spring Container : 스프링 빈과 각 빈의 생명주기를 관리 Spring Container는 여러 이름으로 불려지는데 Spring Context, IOC Container Spring Container 에는 2가지 종류가 있음. Bean Factory : 기본 Spring Container Application Context : 엔터프라이즈에 특화된 고급 Spring Container 손쉬운 웹 애플리케이션 사용 지원 손쉬운 국제화 지원 손쉬운 Spring AOP와 통합 지원 많이 사용되는 컨테이너 : Applica..
- Total
- Today
- Yesterday
- 알고리즘
- 재기동
- Java
- dxdy
- 나만의챗봇
- 객체정렬
- 백준
- BFS
- script
- 다른remote에서 소스코드복사
- Spring
- 코드트리
- 온라인강의
- Comparable
- 글또
- JWT
- springboot
- thymeleaf
- 자바
- 커밋메시지
- jeus
- RASA
- Comparator
- BufferedReader
- NLU
- 유데미
- BufferedWriter
- @exceptionahandler
- 전자정부프레임워크
- 챗봇
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |