Spring

Spring/SpringCloud

Spring Cloud3. Netty

1. Netty? 누구세요Spring Cloud 2020.0.x 이후부터는 Eureka 서버가 기본적으로 톰캣(Tomcat)이 아닌 네티(Netty) 기반으로 동작한다고 한다. Netty라는 이름은 몇 번 들어봤지만, 정확히 어떤 기술인지, 왜 Eureka에서 사용하게 되었는지 궁금해졌다. 이를 바탕으로 Netty에 대해 학습한 내용을 정리해 본다.Netty란?Netty는 비동기 이벤트 기반 네트워크 애플리케이션 프레임워크이다.주로 서버-클라이언트 통신에서 높은 성능을 제공하기 위해 사용된다.Netty의 주요 특징비동기 및 논블로킹 방식요청마다 스레드를 생성하지 않고 이벤트 루프(Event Loop)를 사용해 효율적으로 처리한다.대규모 요청을 동시에 처리하는 데 적합하다.경량 서버서블릿 컨테이너(Tomc..

Spring/SpringCloud

Spring Cloud2. Spring Cloud Gateway Filter 정리

Gateway Filterhttps://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4/dashboard강의를 보고 학습했으며 3장 Gateway를 학습하고 느낀점을 정리해봤다.1 . Spring Cloud Gateway 필터에서의 exchange와 chainSpring Cloud Gateway에서 필터를 작성할 때, 람다식으로 exchange와 chain이라는 매개변수를 사용하는 코드를 자주 접하게 되었다. 이 두 객체가 무엇을 의미하며, 어떻게 주입되는지, 그리고 각각의 역할이 ..

Spring/Spring Transaction

Spring Transaction 2. 스프링 트랜잭션 전파와 활용

스프링 트랜잭션 전파(Propagation)는 트랜잭션이 중첩되거나 여러 트랜잭션이 동시에 발생할 때, 이 트랜잭션들이 어떻게 상호작용할지를 결정하는 중요한 개념이다. HikariCP 커넥션 풀과 트랜잭션 관리스프링에서 트랜잭션을 다루는 경우, Hikari 커넥션 풀을 대부분 사용한다. 이때 반환되는 커넥션은 프록시 객체로 감싸져 있다. 프록시 객체의 주소는 매번 다르지만, 실제 물리적인 커넥션은 동일하다. 예를 들어, 두 개의 논리 트랜잭션이 동일한 물리 커넥션을 공유할 수 있다.중첩 트랜잭션중첩 트랜잭션은 하나의 트랜잭션이 진행 중일 때 또 다른 트랜잭션이 시작되는 상황을 의미한다. 이때 내부 트랜잭션이 외부 트랜잭션에 참여하는 것처럼 보이는 것이 기본 동작이다. 스프링에서는 이러한 동작을 통해 논리..

Spring/Spring Transaction

Spring Transaction 1. 스프링 트랜잭션 이해

스프링 프레임워크는 강력한 트랜잭션 관리 기능을 제공한다.트랜잭션 추상화: JDBC와 JPA의 차이스프링의 트랜잭션 추상화는 서로 다른 데이터 접근 기술(JDBC, JPA 등)에서 동일한 방식으로 트랜잭션을 관리할 수 있게 해준다.예를 들어, JDBC에서는 트랜잭션을 직접 제어해야 하지만, JPA에서는 EntityManager를 통해 트랜잭션을 제어한다.이러한 차이는 스프링이 제공하는 PlatformTransactionManager 인터페이스를 통해 해결된다.JDBC 트랜잭션 예시public void accountTransfer(String fromId, String toId, int money) throws SQLException { Connection con = dataSource.getConn..

Spring/Spring AOP

Spring AOP 6. 포인트컷, 어드바이스, 어드바이저

항상 용어가 헷갈려서, 용어를 확실하게 정리하는 것이 중요하다. 포인트컷: 어디에 부가기능을 적용할지, 범위를 정하는 곳이다. 주로 클래스와 메서드 이름으로 필터링한다.어드바이스: 바로 전 글에서 작성했던 것 처럼 프록시가 호출하는 부가 기능이다.어드바이저: 단순하게 하나의 포인트컷과 하나의 어드바이스를 가지고 있는 것이다. 포인트 컷을 직접 정의할 수도 있지만 스프링이 이미 만들어둔 구현체를 사용하면 편하다. 포인트컷은 정말 많은 포인트컷을 제공한다.1. NameMatchMethodPointcut: 메서드 이름을 기반으로 매칭, 내부에서는 PatterMatchUtils를 사용2. JdkRegexMethodPointcut: JDK 정규 표현식을 기반으로 포인트컷을 매칭3. TruePointcu: 항상 참..

Spring/Spring AOP

Spring AOP 5. ProxyFactory

저번 시간에 Proxy를 만들 때 JDK 동적 프록시를 사용할 때는 InvocationHandler를, CGLIB를 사용할때는 MethodInterceptor를 각각 구현했어야했다.매번 이렇게 다른 것을 해결해 주는 것이 ProxyFactory이다.팩토리 하나로 편리하게 동적 프록시를 생성할 수 있으며 프록시 패곹리는 인터펭이스가 있다면 JDK 동적 프록시를 사용하고, 구체 클래스만 있다면 CGLIB를 사용한다. ProxyFactory 흐름 스프링은 위와같은 인터페이스, 구체클래스일 때 부가 기능을 적용할 때 Advice라는 새로운 개념을 도입했다.개발자는 InvocationHandler나 MethodInterceptor는 Advice만 만들면 된다.프록시 팩토리를 사용하면 Advice를 호출하는 Inv..

Spring/Spring AOP

Spring AOP 4. 동적 프록시: JDK 동적프록시와 CGLIB

인터페이스 기반 프록시와 클래스 기반 프록시인터페이스 기반으로 필수로 생성할 때는, 기존 로직을 구현하고, 구현하는 곳에서 추가 기능을 사용하며 이를 스프링 빈에 등록해서 사용한다.클래스 기반 프록시는 부모를 상속받아 기존 로직을 오버라이드해서 사용했다. 결론적으로, 인터페이스가 없어도 클래스 기반의 프록시가 잘 적용된다.하지만 지금은 부가기능을 추가하려면, 추가할 기능 만큼 모든 프록시를 직접 생성해야하는 문제가 있다.이를 해결하기 위해 나온 것이 동적 프록시이다.  1. 리플랙션리플렉션은 클래스나 메서드의 메타정보를 사용해서 동적으로 호출하는 메서드를 변경할 수 있다.다만, 이 기술을 써서 동적프록시가 동작한다는 것을 이해하는 것이 중요하지 실제로 사용할 땐 정말 주의를 해야한다.만약 메서드 명을 잘..

Spring/Spring AOP

Spring AOP 3. 디자인 패턴: 데코레이터 패턴

Spring AOP 로드맵 AOP를 학습하기 위해 김영한 강사님의 Spring 고급 편 강의를 듣고 있는데, AOP를 보다 더 완벽하게 이해하기 위해서는 아래의 단계를 따라야 한다. 학습해야 할 내용이 방대하지만 차근차근 나아가보자.  이번 글에서는 저번 글에 이어 Spring이 사용하는 디자인 패턴 중 전략 패턴 그중에서도 데코레티어 패턴을 다룬다. 1. 동시성 문제 - 쓰레드 로컬2. 전략 패턴 - 템플릿 메서드 패턴과 콜백 패턴3. 프록시 - 프록시 패턴과 데코레티어 패턴4. 동적 프록시5. Spring 지원 동적 프록시6. 빈 후처리기7. @Aspect AOP8. Spring AOP 프록시 패턴과 디코레이터 패턴은 저번 글에서 언급했지만, 의도에 따라 구분된다.프록시 패터은 캐싱, 로그, 접근 제..

Spring/Spring AOP

Spring AOP 2. 디자인 패턴: 프록시패턴

인터페이스를 직접 구현하면서, 필드에 직접 구현한 인터페이스를 갖고 의존성 주입을 받는다.처음에는 새로 생성하며 그 후에는 저장된 캐시 값을 그대로 사용하여 접근을 제어한다.Spring AOP 로드맵AOP를 학습하기 위해 김영한 강사님의 Spring 고급 편 강의를 듣고 있는데, AOP를 보다 더 완벽하게 이해하기 위해서는 아래의 단계를 따라야 한다. 학습해야 할 내용이 방대하지만 차근차근 나아가보자. 이번 글에서는 Spring이 사용하는 디자인 패턴 중 전략 패턴 그중에서도 프록시 패턴과 데코레티어 패턴을 다룬다. 1. 동시성 문제 - 쓰레드 로컬 2. 전략 패턴 - 템플릿 메서드 패턴과 콜백 패턴 3. 프록시 - 프록시 패턴과 데코레티어 패턴 4. 동적 프록시 5. Spring 지원 동적 프록시 6...

Spring/Spring AOP

Spring AOP 1. 디자인 패턴: 전략 패턴 - 템플릿 메서드 패턴

Spring AOP 로드맵AOP를 학습하기 위해 김영한 강사님의 Spring 고급 편 강의를 듣고 있는데, AOP를 보다 더 완벽하게 이해하기 위해서는 아래의 단계를 따라야 한다.학습해야 할 내용이 방대하지만 차근차근 나아가보자.이번 글에서는 Spring이 사용하는 디자인 패턴 중 전략 패턴 그중에서도 템플릿 메서드 패턴을 다룬다.1. 동시성 문제 - 쓰레드 로컬2. 전략 패턴 - 템플릿 메서드 패턴과 콜백 패턴3. 프록시 - 프록시 패턴과 데코레티어 패턴4. 동적 프록시5. Spring 지원 동적 프록시6. 빈 후처리기7. @Aspect AOP8. Spring AOP템플릿 메서드 패턴(Template Method Pattern)등장 배경템플릿 메서드 패턴은 반복되는 작업의 구조를 표준화할 필요성에서 출..

토이 개발 스토리
'Spring' 카테고리의 글 목록