반응형
제육's 휘발성 코딩
반응형
article thumbnail
스프링 프록시 정리 (2) - 프록시 팩토리, Advice, Advisor, Pointcut
🔷 Spring/Advanced 2023. 2. 19. 23:20

프록시 팩토리 프록시 팩토리란 스프링에서 동적 프록시를 통합해서 관리해주는 클래스 팩토리이다. 프록시 팩토리를 사용하면, 인터페이스가 있을 경우 JDK 동적 프록시를 사용하고, 구체 클래스만 있으면 CGLIB 동적 프록시를 사용하도록 처리해준다. client의 요청이 오면 대상 Target 클래스의 정보를 파악하여 동적 프록시를 선택하여 반환해준다. JDK 동적 프록시는 InvocationHandler, CGLIB 동적 프록시는 MethodInterceptor를 각각 구현해야 하는데, 스프링에선 Advice라는 개념을 통해 공통 구현을 할 수 있도록 지원한다. Advice 개발자가 Advice를 구현하게 되면 동적 프록시 별로 요청오는 핸들러의 정보를 받아 실제 타겟의 로직을 실행시켜 준다. 즉, Adv..

article thumbnail
스프링 프록시 정리 (1) - JDK 동적 프록시, CGLIB 동적 프록시
🔷 Spring/Advanced 2023. 2. 19. 17:24

프록시란? 프록시는 서버와 클라이언트 사이에서 통신을 대신해주는 역할을 하는 객체이다. 자바에서는 이 프록시를 통해서 JDK 동적 프록시와 CGLIB 프록시를 지원해서 프록시를 직접 생성하는 것이 아닌, 프록시 객체를 런타임 환경에서 자동으로 만들 수 있다. JDK 동적 프록시는 인터페이스의 구현체일 경우 생성되며, CGLIB 동적 프록시의 경우 인터페이스가 없는 구현체 클래스일 경우에 생성 된다. 스프링에서는 AOP 적용을 인터페이스 구현없이 할 수 있도록 기본 방식으로 CGLIB를 채택하여 사용하고 있다. (레거시는 JDK 동적 프록시 사용) JDK 동적 프록시와 CGLIB 프록시에 대해 알아보자. 프록시에 대한 개념은 하단의 포스팅을 참고하자. https://sasca37.tistory.com/27..

article thumbnail
[Database I] - 스프링 트랜잭션 이해 (@Transaction)
🔷 Spring/Database 2022. 6. 3. 03:10

스프링과 문제 해결 순수한 서비스 계층 서비스 계층은 특정 기술에 종속적이지 않게 개발해야 한다. 계층을 나눈 이유도 서비스 계층을 최대한 순수하게 유지하기 위한 목적이 크다. 즉, 한 마디로 JDBC를 쓰다 JPA로 변경, Http API를 쓰다가 GRPC로 변경 등에 대한 과정으로 인해 서비스 계층에 수정이 있으면 안된다. 스프링은 트랜잭션 문제 (JDBC에 의존하는 문제, 트랜잭션 동기화, 반복 문제), 예외 누수 등의 문제를 해결할 수 있는 다양한 방법을 제공한다. 트랜잭션 추상화 트랜잭션은 원자적 단위의 비즈니스 로직을 처리하기 위해 사용한다. JDBC, JPA 등 구현 기술마다 트랜잭션을 사용하는 방법이 다르다. (JDBC : setAutoCommit(false), JPA : transacti..

[Spring] 스프링 부트 예제 - 회원 관리
🔷 Spring/basic 2022. 4. 13. 12:57

회원 관리 예제 웹 애플리케이션 계층 구조를 보고 백엔드 관점에서 회원 관리 예제를 적용해보자. 컨트롤러 : 웹 MVC의 컨트롤러 역할 서비스 : 핵심 비즈니스 로직 구현 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인 : 비즈니스 도메인 객체 (회원, 주문, 쿠폰 등 데이터베이스에서 저장하고 관리되는 모델) 비즈니스 요구사항 정리 데이터 : 회원 ID, 이름 기능 : 회원 등록, 조회 데이터 저장소가 아직 선정되지 않음 클래스 의존 관계는 데이터베이스가 선정되지 않았다는 가정이므로, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계하자. 개발을 진행하기 위해서 초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소 사용 회원 도메인과 리포지토리 만들기 pu..

Spring AOP
🔷 Spring/basic 2021. 7. 26. 03:06

AOP란? Spring은 Spring Triangle이라고 부르는 세 가지 개념을 제공해준다. 각각 IoC, AOP, PSA를 일컫는다. AOP는 Aspect Oriented Programming의 약자로 '관점 지향적인 프로그래밍'이라는 의미이다. AOP의 핵심 개념은 관심사의 분리이다. (Tracing, Exception, Transction 등) AOP 사용 시 코드 분산, 코드 꼬임 등을 처리하여 간결한 구조를 만들 수 있다. ※ PSA (Portable Service Abstraction) : 추상화 계층을 사용하여 어떤 기술을 내부에 숨기고 개발자에게 편의성을 제공해주는 것 AOP 기능 @Aspect : 흩어진 관심사를 모듈화, Aspect 클래스임을 정의 Target : Aspect를 적용하..

반응형
반응형