IT/Spring | Java

IT/Spring | Java

[Spring] AOP 구현 + AspectJ 활용

의존성 추가 Maven 스프링 AOP를 사용하기 위해서는 아래와 같이 의존성을 추가해야 한다. org.springframework.boot spring-boot-starter-aop 하지만!!!!!! 나는 더 많은 조인포인트 사용을 위해 AspectJ를 활용할 것이다. (이에 대해 자세한 내용은 다음 포스팅에..

IT/Spring | Java

[Spring] 스프링 AOP

AOP (Aspect Oriented Programming) AOP는 Aspect Oriented Programming의 약자이며 관점 지향 프로그래밍이라고 한다. 로직을 핵심적인 관점 및 부가적인 관점으로 나눠 그 관점(Aspect)을 기준으로 각각 모듈화하는 개발 방법이다. 핵심적인 관점은 핵심 비즈니스 로직을 말하며, 부가적인 관점은 어플리케이션에서 공통적으로 발생하는 부가적인 작업을 의미한다. 이러한 부가 작업에는 로깅, 트랜잭션 관리, 보안, 캐싱 등 다양한 측면을 포함할 수 있다. 개발을 진행하다 보면 반복해서 사용해야 하는 코드들이 있다. 아래 예시에서 사용자 정보를 불러오는 UserService와 메일 정보를 불러오는 MailService는 핵심 기능 관점에서는 공통 요소가 없다. 하지만 ..

IT/Spring | Java

[Spring] @RequestBody DTO에 null이 들어갈 때

문제상황 { "seq": "01", "postDate": "20230524", "mCodeName": "어쩌고" } 위와 같은 데이터(예시)를 @RequestBody로 요청을 받았는데 DTO에 자꾸 null 값이 들어오는 것을 확인했다. 아래는 DTO @Data @AllArgsConstructor @NoArgsConstructor public class TistoryDTO { String seq; String postDate; String mCodeName; } 문제가 되는 파라미터는 mCodeName이다. 이 데이터가 자꾸 null로 들어와서 날 화나게 만듦;; null 안 보냈다고 ㅡㅡ 반대로 쿼리에서 M_CODE_NAME이라는 컬럼을 select 해 왔을 때도 제대로 맵핑이 안됐다. 카멜 케이스 지..

IT/Spring | Java

[Spring] MyBatis CamelCase 적용 (+대소문자 오류)

대부분의 DB 컬럼들은 SnakeCase(스네이크 케이스)를 사용한다. LAST_NAME와 같이 언더바(_)를 붙여서 사용하는 것을 스네이크 케이스이다. 하지만 보통 변수명을 지을 때 CamelCase(카멜 케이스)를 사용하기 때문에 MyBatis 쿼리 조회 후 스네이크케이스를 카멜케이스로 자동 변환하는 것이 편리할 것이다. 즉 LAST_NAME -> lastName으로 바꿔주는 과정이 필요하다. 1. 예시 예를 들어, 다음과 같은 카멜케이스로 작성된 DTO 클래스가 있다고 하자. @Getter @NoArgsConstructor @AllArgsConstructor @Build public class UserDTO { private String userId; private String userNm; pri..

IT/Spring | Java

[Spring] 객체와 String 문자열 null 체크 (==, isEmpty, hasText)

1. String 타입 null 체크 문자열 데이터의 유효성을 체크하기 위해 다음과 같은 방법을 사용할 수 있다. 여기서 유효성은 데이터가 빈 문자열 또는 null 인지 확인한다. equals() 와 == 연산자 if("".equals(map.get("stringData")) || map.get("stringData") == null) { ... } "".equals(비교데이터)를 통해 해당 값이 빈 값인가, 비교데이터 == null을 통해 해당 값이 null인가를 판단할 수 있다. 이 때, (비교데이터).equals("") 방식은 exception이 발생할 수 있기 때문에 불가하다. 더보기 여기서 자세히 설명하면, equals()는 실제 값을 비교하고 == 연산자는 두 개의 주소값을 비교한다. Stri..

IT/Spring | Java

[Spring] @RestControllerAdvice를 이용한 간단한 ExceptionHandler 구현

Spring에서 예외처리를 하는 건 중요하다. 여러가지 이유가 있겠지만 예외처리가 필요한 이유 중 하나는 서버에서 오류가 발생했을 때 클라이언트에서 아래와 같이 너무 많은 정보가 노출되는 것을 볼 수 있다. 그럼 보안에도 좋지 않다. 그래서 익셉션이 발생했을 경우 그에 맞는 에러 응답을 처리하는 방식으로 수정하기로 했다. 사용자는 자신의 상황에 맞게 다양하게 예외처리 방법을 구현할 수 있다. 그 중 하나가 @RestControllerAdvice 어노테이션을 이용하는 방법이다. 나는 다른 블로그(하단에 링크)를 참고하여 내 입맛에 맞게 수정했다. 필요한 파일들은 다음과 같다. 1. 에러코드 정의 원래 인터페이스를 이용하여 추상화한 ErrorCode를 정의한 후 사용자 상황에 맞게 구현하는 방식으로 많이 구..

힞뚜루마뚜루
'IT/Spring | Java' 카테고리의 글 목록