본문 바로가기

▶ Back-End/Java47

LocalDate Jackson Data Format 변경 Java8 Jackson ObjectMapper 직렬화 시 LocalDate 타입을 timestamps Format에서 dates Format으로 변경하는 방법 *자세한 설명 생략 *직렬화(Serialization) : Java Object → JSON String *역직렬화(Deserialization) : JSON String → Java Object ▷ 변경 전 *timestamps Format(Jackson 기본 형식) { "visitDates": { "year": 2023, "month": "NOVEMBER", "monthValue": 11, "dayOfMonth": 23, "leapYear": false, "dayOfWeek": "THURSDAY", "dayOfYear": 327, "era":.. 2023. 11. 23.
@RestControllerAdvice - 전역 예외 처리 @RestControllerAdvice를 사용해 모든 Controller에 대한 예외 처리를 한 곳에서 관리 및 처리 *공통 에러 메시지 및 이외 예외들을 공통 처리 하는 예제 *자세한 설명 생략 ▷ @RestControllerAdvice란? - Application 전역 예외 처리 Annotation - Project 하나의 @ControllerAdvice만 관리하는 것을 권장 - @Controller Annotation이 붙은 Controller에서 발생하는 예외를 처리 - @ResponseBody가 있어 JSON 응답 *@ControllerAdvice 차이 - @ExceptionHandler를 통해 처리 *Method 범위 Exception 처리 ▷ 사용 예제 *공통 에러 메시지 설정 *이외 4XX.. 2023. 11. 17.
Swagger UI Hangs on Big Json Respones 해결 방법 Swagger UI에서 많은 양의 응답 값을 받게 되면 버벅 거리는 문제 발생 *자세한 설명 생략 ▷ 요약 문제 : Swagger UI syntaxHighlight로 인한 Big Json Response 처리 시간문제 해결 : application.properties에 springdoc.swagger-ui.syntaxHighlight.activated= false 추가 ▷ 해결 방법 *application.properties에서 Swagger UI SyntaxHighlight 기능off # Swagger # Swagger UI syntaxHighlight Setting springdoc.swagger-ui.syntaxHighlight.activated= false ▷ 결과 화면 *SyntaxHighlig.. 2023. 10. 18.
Swagger3 JWT 인증 설정 Swagger UI에서 API 테스트 시 JWT 인증을 위한 추가 설정 *이전 글에 이어서 작업(관련 글 참고) *자세한 설명 생략 ▷ Swagger-ui 추가 설정 *@SecurityScheme 사용 속성 태그 속성 설명 @SecurityScheme 인증 스키마 정보를 설정 type 인증타입 (APIKEY, HTTP, OPENIDCONNECT, OAUTH2) in 인증키 입력 위치(HEADER, QUERY, COOKIE) name 인증 스키마 명 description 인증 스키마 설명 *@OpenAPIDefinition 사용 속성 태그 속성 설명 @SecurityRequirement name Swagger-ui에서 사용할 인증 스키마 /** * Swagger3 * */ @OpenAPIDefinition.. 2023. 10. 18.
Swagger 연동 및 설정 방법 Spring Boot + Swagger 연동 방법과 간단한 설정 방법 *maven project에서 springdoc(swagger3)으로 진행 *자세한 설명 생략 ▷ Swagger3 연동 *dependency 이후 바로 사용 가능 ① pom.xml springdoc dependency org.springdoc springdoc-openapi-ui 1.7.0 ▷ Swagger3 명세서 작성 방법 *Swagger3 주요 Annotation 태그 속성 설명 @Tag Controller 명세 name API 그룹 명 description API 그룹 설명 @Operation API 명세 summary API 설명 description API 상세 설명 @Schema Model 명세 description Mod.. 2023. 10. 18.
로그파일 생성과 관리(logback-spring.xml) 로그파일을 생성하고 관리를 위한 반복 정책을 설정하는 방법 *자세한 설명 생략 ▷ logback-spring.xml *Cassandra 관련 부분은 무시(다양한 로그를 한 파일에 담을 수 있다.) ${LOG_MSG_PATTERN} %green(%d{yyyy-MM-dd HH:mm:ss} [%-5level] : %msg %n) ${LOG_FILE_MSG_PATTERN} ${LOG_PATH}/${LOG_FILE_NAME}.%d{yyyy-MM-dd}_%i.log 100MB 7 ▷ 관련 글 SLF4J 기본 사용 방법 spring-boot-starter 에는 SLF4J와 Logback이 기본으로 설정 돼있다. *자세한 설명 생략 ▷ SLF4J란? - Simple Logging Facade 4 Java - 다양한 L.. 2023. 10. 17.
요청 필드 값 공통 체크 API 별 다른 요청 필드 값을 체크하는 메소드 *상황에 따라 변경해서 사용 *자세한 설명 생략 /** * 요청 필드 값 공통 체크 * * [체크 리스트] * 1. JWT VERIFY * 2. 요청 필드 값 체크 * * * @param req * @param reqVO * @param resVO * @return CmmResVO */ public CmmResVO fieldsCheck(HttpServletRequest req, Object reqVO, CmmResVO resVO) { try { /** JWT 체크 */ if (!"0000".equals(JWTVerify(req, resVO).getResultCode())) { return resVO; } /** 요청 값 체크 */ Field[] fields.. 2023. 10. 12.
VERIFY JWT(nimbus) JWT 검증 메소드 *JWE *자세한 설명 생략 /** * JWT VERIFY * * @param HttpServletRequest * @param resVO * @return CmmResVO */ public CmmResVO JWTVerify(HttpServletRequest req, CmmResVO resVO) { try { final String jwt = req.getHeader("Authorization"); if(CmmUtile.nullCheck(jwt)) { return resVO.ERR_9005(); } /** JWE RSA KEYPAIR */ final KeyFactory keyFactory = KeyFactory.getInstance("RSA"); /* Decryption Key */ .. 2023. 10. 12.
Create JWT(nimbus) JWT 생성 메소드 *JWE *자세한 설명 생략 /** * JWT CREATE * * @return String */ public String JWTCreate() { String jwt = ""; try { /** JWE RSA KEYPAIR */ final KeyFactory keyFactory = KeyFactory.getInstance("RSA"); /* Encryption Key */ final X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(Base64.getDecoder().decode(publicKey)); final RSAPublicKey rsaPublicKey = (RSAPublicKey) keyFactory.generat.. 2023. 10. 12.
728x90
728x90