🍳

초보 개발자의 일상

개발 45

AOP 관련 내용과 예시 - chat gpt

AOP (Aspect-Oriented Programming)란?AOP는 관점 지향 프로그래밍이라고 하며, 주로 공통적인 관심사(cross-cutting concerns)를 분리하여 코드의 유지보수성을 높이고, 코드 중복을 줄여주는 프로그래밍 기법입니다.AOP의 핵심 개념은 핵심 로직(비즈니스 로직)과 공통 기능(로깅, 트랜잭션 관리 등)을 분리하여, 공통 기능을 재사용 가능한 "aspect"로 정의하는 것입니다.AOP의 주요 구성 요소:Aspect: 공통적으로 처리해야 할 관심사를 모은 모듈. 예: 로깅, 보안, 트랜잭션.Join Point: 코드 내에서 AOP가 적용될 수 있는 지점. 예를 들어, 메소드 호출, 메소드 실행 전후, 예외 발생 시 등이 될 수 있습니다.Advice: 실제로 적용될 행동. ..

개발/기타 2024.11.25

프로젝트 공통 관리가 필요한 부분 브랜치명 정리 - chat gpt

요약comm/env: 환경 설정 및 환경별 프로파일 관리 (개발, 테스트, 운영 환경에 맞춘 설정 관리).comm/exception: 예외 처리 및 글로벌 예외 관리 (예외 발생 시 일관된 처리 및 로깅).comm/static: 정적 리소스 관리 및 최적화 (정적 파일 경로 설정, 캐시, 압축 등).comm/aop: AOP를 활용한 공통 기능 관리 (로깅, 트랜잭션, 보안 등 공통 관심사 처리).1. comm/env - 환경 설정 관리설명: comm/env 브랜치는 애플리케이션이 실행되는 환경 설정과 관련된 작업을 다룹니다. 이는 개발, 테스트, 운영 환경에 따라 다르게 설정되는 값을 관리하는 작업입니다.작업 내용:프로퍼티 파일 설정: application.properties 또는 application...

개발/기타 2024.11.25

JWT 토큰 발행 받기

1. 회원가입. @PostMapping("/signup")ID/PW 입력 (request)ID 유효한지 체크. DuplicateKeyException으로 이미 있는 아이디면 throw new. 없는 아이디면 다음으로 넘어가기.PW는 PasswordEncoder로 암호화DB에 저장 사용자 정보 저장.ResponseEntity로 status(상태)는 성공 응답 코드, body(본문)에는 회원가입이 완료되었다는 메시지를 클라이언트에게 응답해주기.(보내주기)2. 로그인 & 토큰 @PostMapping("/login")ID/PW 입력 > 사용자 확인:DB에서 확인 > USER가 맞으면... > 인증 토큰 생성 > 인증 객체 생성 > 스프링 전체에 사용할 수 있도록 bean 등록 > user는 토큰으로 여러 서비스..

개발/SpringBoot 2024.11.08

Throwable cause, Throwable

Parameter로 Throwable cause를 받는 코드를 보았다. 이게 무엇인가?정리해보자.Throwable cause는 자바에서 예외를 처리할 때 자주 등장하는 개념입니다. 이를 이해하려면 Throwable이 무엇인지부터 짚고 넘어가보자. 1. Throwable이란?Throwable은 자바에서 모든 오류와 예외를 나타내는 최상위 클래스입니다. 자바에서 발생할 수 있는 예외(Exception)와 에러(Error)는 모두 Throwable 클래스를 상속합니다.Exception: 프로그램에서 처리할 수 있는 예외를 나타냅니다.Error: 프로그램에서 처리할 수 없는 오류를 나타냅니다 (예: OutOfMemoryError).따라서, Throwable 클래스는 예외와 오류의 공통 부모 클래스입니다.2. T..

개발/SpringBoot 2024.11.07

@JsonInclude

1. @JsonInclude 정의@JsonInclude는 Jackson 라이브러리에서 제공하는 애노테이션으로, JSON 직렬화 시 특정 속성이나 필드의 포함 여부를 제어합니다. 이를 사용하여 객체의 필드가 null인 경우나, 빈 값인 경우 해당 필드를 JSON 응답에서 제외할 수 있습니다.주로 불필요한 데이터를 제외하고, 응답 크기를 최적화하기 위해 사용됩니다.2. @JsonInclude 사용하는 이유불필요한 데이터 제외:기본적으로 객체의 속성이 null이거나 빈 값일 때 이를 JSON에 포함시키지 않음으로써, 응답 데이터 크기를 줄이고 효율성을 높입니다.예를 들어, null 값인 필드는 API 응답에 포함되지 않게 하여 클라이언트가 불필요한 null 값을 처리하지 않게 할 수 있습니다.응답 최적화:조건..

개발/SpringBoot 2024.11.07

Builder

코드보고 해석을 하다가 자주 보게 되는 Builder.객체를 만들어준다는 것 밖에 모르기 때문에 제대로 알기 위해서 정리해보자.1. Builder 패턴 정의Builder 패턴은 복잡한 객체를 단계별로 생성할 수 있도록 하는 디자인 패턴입니다. 이 패턴은 객체를 생성하는 과정을 여러 단계로 나누어, 각 단계에서 필요한 값만 설정할 수 있도록 합니다. 이때, 객체의 생성자에서 처리할 수 없는 복잡한 초기화 작업을 분리하여 가독성을 높이고 유지보수를 용이하게 합니다. 핵심 아이디어: 생성자 대신에 Builder 클래스를 사용해 객체를 생성하며, 빌더 객체에 필요한 값을 차례대로 설정한 후 최종적으로 객체를 생성합니다.2. Builder 패턴을 사용하는 이유가독성 향상: 객체의 생성자가 복잡하거나, 많은 필드를..

개발/SpringBoot 2024.11.07

Enum

Enum 파일을 만들었는데 Enum이 무엇이고 왜 Enum으로 만드는 건지 이해가 안 돼서 정리해보기.1. Enum 정의Enum은 열거형 (Enumeration) 의 약자로, 고정된 값들의 집합을 정의하는 데이터 타입입니다. 이 값들은 객체처럼 다루어지며, 값의 범위가 제한되어 있어 특정 값만 허용됩니다. 예를 들어, 요일, 상태 코드, 방향 등을 표현할 때 유용합니다.2. 왜 사용하는가코드 가독성: 고정된 상수값을 의미 있는 이름으로 표현하여 코드의 직관성을 높입니다.타입 안전성: 잘못된 값이 사용될 가능성을 줄이고, 컴파일 타임에 오류를 잡을 수 있어 안전합니다.유지보수 용이성: 상수값들을 한 곳에서 관리하여 코드 변경 시 영향을 최소화하고 유지보수를 용이하게 합니다.3. 어떻게 사용하는지1. Enu..

개발/SpringBoot 2024.11.07

@JsonFormat

@JsonFormatJackson 라이브러리에서 제공하는 어노테이션.객체를 JSON으로 직렬화하거나 JSON을 객체로 역직렬화할 때 특정 필드의 포맷을 지정할 수 있게 해준다.주로 날짜, 시간, 숫자와 같은 데이터를 직렬화할 때 유용하게 사용된다. (pattern = "yyyy-MM-dd HH:mm")패턴을 yyyy-MM-dd HH:mm 으로 하겠다는 의미.즉 출력하면 2024-11-07 19:30 이런식으로 됨. 예시▼ 파일명: TestDTO.java@JsonFormat(pattern = "yyyy-MM-dd HH:mm")private LocalDateTime createdAt;

개발/SpringBoot 2024.11.07