본문 바로가기

728x90

분류 전체보기

(127)
스프링 AOP - 어드바이스 종류 (@Around, @Before, @AfterReturning, @AfterThrowing, @After) 스프링 AOP의 Advice에는 @Around 외에도 아래와 같은 종류가 있습니다.  Before Advice(@Before):  타깃 메서드(join point)가 실행되기 전에 실행되는 advice입니다. 주로 로그를 남기거나, 사전 검증을 수행하는 데 사용됩니다.After Advice: 타겟 메서드가 실행된 후에 실행되는 advice입니다. 성공적으로 실행된 후에 또는 예외가 발생한 후 등에 적용될 수 있습니다.@AfterReturning: 메서드가 정상적으로 종료된 후에 실행됩니다.@AfterThrowing: 메서드 실행 중 예외가 발생했을 때 실행됩니다. @After : 메서드가 정상 또는 예외에 관계없이 실행(finally)됩니다. 일반적으로 리소스를 해제하는 데 사용합니다.Around Adv..
Kubernetes 란? 정의 컨테이너화된 애플리케이션 (도커 이미지가 빌드/실행된 것 )의 자동 배포, 확장 및 관리를 위한 오픈소스 플랫폼입니다. 구글이 개발하였으며, 컨테이너 오케스트레이션의 표준으로 자리 잡았습니다. 개발자와 운영팀이 컨테이너 기반의 애플리케이션을 더 쉽게 관리하고 배포할 수 있도록 돕습니다. 쿠버네티스의 아키텍처쿠버네티스는 다음과 같은 주요 구성 요소로 이루어져 있습니다:마스터 노드(Master Node):클러스터의 제어 플레인으로, 클러스터의 상태를 관리합니다. (클러스터는 여러 개의 노드(서버)로 구성된 집합)주요 컴포넌트: kube-apiserver: API 요청을 처리하고, 클러스터 상태를 관리합니다.etcd: 클러스터의 모든 데이터를 저장하는 분산 키-값 저장소입니다.kube-scheduler:..
스프링 AOP 구현하기 - 1 (@Aspect, @Around, @Pointcut) 스프링 AOP를 구현하는 기본 코드입니다. 총 2개 포스팅으로 작성하였습니다.build.gradle스프링 AOP 기능을 구현하기 위해서 아래 dependency 들로 구성하였습니다.dependencies { implementation 'org.springframework.boot:spring-boot-starter' // Spring aop 사용을 위한 dependency implementation 'org.springframework.boot:spring-boot-starter-aop' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springfra..
스프링 AOP 구현하기 - 2 (포인트컷 분리, @Order) https://silver-programmer.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81-AOP-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-1 위 포스팅에 이어서 작성하는 AOP 구현하기 2편입니다. 이번 포스팅에는 아래와 같은 내용을 정리하였습니다.포인트컷을 분리하여 외부에서 어떻게 참조할 수 있는지Advice 적용 순서를 어떻게 바꿀 수 있는지스프링 AOP 구현 - 3 (Pointcut 참조)포인트컷을 공용으로 사용하기 위해 별도의 외부 클래스에 모아둘 수 있습니다. 외부에서 호출할 때는 포인트컷의 접근 제어자를 public으로 설정합니다!package hello.aop.order.aop;import org.aspectj.lang.anno..
@ComponentScan vs scanBasePackages Spring boot를 공부하다가 특정 패키지 하위의 클래스들만 bean으로 등록하고 싶은 경우가 생겼습니다. 이 경우, 크게 2가지 방법으로 해결이 가능합니다. 예를 들어, 아래 그림의 hello.aop.order 패키지 하위의 클래스들만 bean으로 등록하고 싶은 경우를 생각해 보겠습니다.1. @ComponentScan의 basePackages로 패키지 경로 지정아래 코드와 같이 @ComponentScan 의 basePackages 속성에 해당 패키지 경로를 지정한 후, 생성된 bean을 출력해 보면 hello.aop.order 패키지 내부의 @Component 들만 bean으로 등록됨을 확인할 수 있습니다.@SpringBootApplication@ComponentScan(basePackages = ..
Spring AOP 란? Spring AOP 는 이름 그대로 Spring에서 제공하는 AOP 기능을 의미합니다. 그렇다면 AOP가 무엇인지 알아보겠습니다. AOP란AOP는 Apsect-Oriented Programming의 약자로, 관점 지향 프로그래밍이라고 합니다. AOP가 등장한 이유는 부가 기능을 핵심 기능에서 분리하고 한 곳에서 관리하도록 하기 위해서였습니다. 아래 핵심 기능과 부가 기능이 무엇인지 살펴보겠습니다.핵심 기능과 부가 기능 어플리케이션은 크게 핵심 기능과 부가 기능으로 나눌 수 있습니다.핵심 기능은 각 객체가 제공하는 고유의 구별되는 기능입니다. 부가 기능은 핵심 기능을 보조하기 위해 제공되는 기능입니다. 예를 들어 `OrderService`라는 클래스는 주문 관련 로직을 핵심 기능으로 제공하고, `Order..
AOP 적용 방식 AOP를 사용하면 핵심 기능과 부가 기능이 코드상 완전히 분리되어서 관리됩니다. AOP를 사용할 때 부가 기능 로직은 크게 3가지 방법으로 실제 로직에 추가될 수 있습니다.컴파일 시점클래스 로딩 시점런타임 시점(프록시)원본 로직에 부가 기능 로직이 추가되는 것을 Weaving(위빙) 이라고 합니다. 각 방식에 대해서 이번 포스팅에서 정리해 보았습니다. 컴파일 시점 (컴파일 타임 - 위빙)컴파일을 하면 .java 소스 코드가 컴파일러를 통해 .class 로 변환됩니다. 이렇게 .class 를 만드는 시점에 부가 기능 로직을 추가할 수 있습니다. 이 때는 AspectJ가 제공하는 특별한 컴파일러를 사용해야 합니다. AspectJ 컴파일러는 Aspect를 확인해서 해당 클래스가 적용 대상인지 확인 후, 적용 ..
[DB] 스프링의 예외 변환기 스프링은 아래와 같이 데이터 접근과 관련한 예외를 추상화해서 제공해주고 있습니다.  예외의 최상위 예외는 org.springframework.dao.DataAccessException 입니다. 런타임 예외를 상속 받았기 때문에 스프링이 제공하는 데이터 접근 계층의 모든 예외는 런타임 예외입니다. DataAccessException 은 크게 NonTransient 예외와 Transient 예외로 구분할 수 있습니다.Transient : 일시적이라는 뜻으로 동일한 SQL을 다시 시도했을 때 성공할 가능성이 있습니다.예를 들어 쿼리 timeout, lock과 관련된 오류들입니다. 이런 오류들은 DB 상태가 좋아지거나 lock이 풀렸을 때 다시 시도하면 성공할 수 있습니다.NonTransient : 일시적이지 ..

728x90
반응형