Free Lines Arrow
본문 바로가기
728x90

Spring83

[Spring] JDK Proxy JDK Proxy 인터페이스 기반으로 프록시를 동적으로 만든다. 즉 인터페이스가 있어야 프록시를 만들수 있다. JDK Proxy 예제 JDK 동적 프록시를 만들기 위해서는 InvoctionHandler 를 구현해주면 된다. package java.lang.reflect; public interface InvocationHandler { public Object invoke(Object proxy, Method method, Object[] args) throws Throwable; } proxy: 프록시 자신 method: 호출한 메소드 args: 메소드를 호출할때 전달한 인수 UserServiceInterface 앞서 말했듯이 JDK proxy 는 인터페이스가 필요하다. package com.examp.. 2023. 4. 18.
[Spring] Proxy 프록시란? 프록시의 사전 의미는 대리자 이다. 실제 객체를 직접 호출 하는 방식이 아닌 대리자를 통해 호출 하는 방식이다. 프록시 패턴과는 다르다. 좀 더 자세히 분석해보자 프록시 객체는 실제 호출할 객체를 참조하고있다. 즉 감싸고 있다고 생각하면 된다. 어떤 이점이 있을까? 참조를 할수 있다는 것은 다른 객체도 참조를 할수 있다는 말이다. - 그렇다면 프록시 안에 공통적인 로직을 넣는다면? 어디든 적용할수 있다는 말이다. 아래와 같이 시간측정 공통로직을 넣을수 있다. 이렇게 부가적, 공통적, 관점들을 모듈로 만들수 있다. - 이게 바로 AOP 이다. 스프링에서 제공하는 프록시 종류 CGLIB Proxy 클래스 기반 extends 구현 JDK Dynamic Proxy 인터페이스 기반 implements .. 2023. 1. 23.
[Spring DB] 트랜잭션 적용 방식 트랜잭션 적용 방식 트랜잭션의 적용 방식을 알아보자. 어떻게 트랜잭션 코드가 개선되는지 확인해본다. AOP를 이용하여 트랜잭션 코드와 비즈니스 로직을 분류 해본다. 트랜잭션 의 적용 방식 종류 선언적 트랜잭션 관리 @Transaction - AOP 사용 - Proxy 구조 프로그래밍 방식의 트랜잭션 관리 JDBC 트랜잭션 - 코드 작성 필요 트랜잭션 템플릿 - 코드 작성 필요 트랜잭션 사용 준비 앞서 커넥션 풀에 대해 공부 했다. 트랜잭션을 사용하기 위해선 동일한 커넥션을 사용해야 된다. JDBC 트랜잭션 적용 동일한 커넥션을 사용하기 위해 커넥션을 파라미터로 넘겨주자. accountTransfer 메소드 시작 할때 dataSource 에서 커넥션을 가져온다. 커넥션의 오토 커밋을 false 로 하여 트.. 2022. 9. 11.
[Spring DB] 트랜잭션 트랜잭션 트랜잭션에 대해서 알아보고 직접 써보자 트랜잭션 이란? 트랜잭션은 하나의 논리적 실행 단위다 영어로는 컴퓨터로 처리하는 작업의 단위 라고 사전에 정의 되어 있다. 왜 필요할까? 제일 쉬운 예제가 계좌 이체 이다. 계좌를 이체할때 다음과 같은 로직을 구현했다고 하자 금액을 차감했는데 오류가 발생해 상대방 계좌에 금액이 안들어 갔다면? 이러한 문제 때문에 트랜잭션이 필요하다 금액차감 이나 금액 증가가 실패하면 모두 실패 되거나 둘다 성공해야 된다. 트랜잭션의 ACID A (원자성): 트랜잭션 안에서 실행되는 로직은 모두다 실패 하거나 모두다 성공하거나를 보장해야된다. C (일관성): 모든 트랜잭션은 일관성 있어야 한다 즉 데이터 무경성 제약 조건을 만족해야 된다. I (격리성): 동시에 실행되는 트.. 2022. 7. 31.
728x90
반응형