스프링

MSA, EDA, Reactive 패러다임

Node.js기반 Express VS java기반 Spring WebFlux

Spring mvc는 분명 "multi Thread, sync, Blcoking" 방식을 통해 Node.js 대비 이점이 존재하지만, 단점 역시 존재한다. 그리고 이러한 단점이 요즘의 애플리케이션 개발 트렌드에 적합하지 않기에 Spring webflux등의 Reactive Stack을 통한 리액티브 프로그래밍을 통해 이러한 단점을 극복하도록 지원한다. 하지만, Spring의 Reactive Stack와 유사하게, express 기반의 Node.js 역시 async, non-blocking, event-driven 방식을 사용한다. 이번 글에선 스프링 webflux와 유사하게 async, non-blocking, event-driven 방식을 사용하는 Node.js를 비교분석해보겠다. 1) Spring w..

Spring boot

스프링 핵심원리 13(완) [스프링 AOP 실전 주의 사항]

이번 글에선 스프링 AOP를 실제로 사용할 때, 주의해야할 사항들에 대해 살펴보자. 스프링 AOP를 프록시 방식의 AOP를 사용하기에 다음과 같은 문제점들이 있다. 1) 내부 호출시 실제 객체를 사용하여 프록시 적용이 안되는 문제 2)프록시 기술 자체의 한계 프록시와 내부 호출 - 문제 스프링은 프록시 방식의 AOP를 사용한다. 따라서 AOP를 적용하려면 항상 프록시를 통해서 대상 객체(Target)을 호출해야 한다. 이렇게 해야 프록시에서 먼저 어드바이스를 호출하고, 이후에 대상 객체를 호출한다. 만약 프록시를 거치지 않고 대상 객체를 직접 호출하게 되면 AOP가 적용되지 않고, 어드바이스도 호출되지 않는다. AOP를 적용하면 스프링은 대상 객체 대신에 프록시를 스프링 빈으로 등록한다. 따라서 스프링은..

Spring boot

스프링 핵심원리 12 [커스텀 AOP 어노테이션 만들기]

어노테이션 기반 개발의 예제를 몇가지 만들어보자. @Trace: 로그 출력 @Retry: 예외 발생해도 일정 횟수 재시도. 과 같은 유용한 AOP를 만들어보자. 우선, AOP를 적용할 예제를 만들어보자. Repository 5번에 1번은 실패하는 Repository를 구성한다. @Repository public class ExamRepository { private static int seq = 0; /** * 5번에 1번 실패하는 요청 */ public String save(String itemId) { seq++; if (seq % 5 == 0) { throw new IllegalStateException("예외 발생"); } return "ok"; } } Service 단순히 Repository를 ..

Spring boot

스프링 핵심원리 11 [포인트 컷]

https://codenme.tistory.com/117 스프링 핵심원리-고급편 7 [스프링 AOP 사용법] https://codenme.tistory.com/116 스프링 핵심원리-고급편 6 [스프링 AOP] https://codenme.tistory.com/115 스프링 핵심원리-고급편 6 [@Aspect AOP] https://codenme.tistory.com/114 스프링 핵심원리-고급편 6 [빈 후처리기] https: codenme.tistory.com 위의 글과 이어지는 내용입니다. 이전의 글에서부터 아래와 같은 포인트 컷 표현식을 사용했는데, 이에 대해 정리해보자. @Pointcut("execution(* hello.aop.order..*(..))") 포인트컷 지시자 지금부터 포인트컷 표현..

Spring boot

스프링 핵심원리 9 [스프링 AOP]

https://codenme.tistory.com/115 스프링 핵심원리-고급편 6 [@Aspect AOP] https://codenme.tistory.com/114 스프링 핵심원리-고급편 6 [빈 후처리기] https://codenme.tistory.com/113 스프링 핵심원리-고급편 5 [스프링에서의 프록시: beanFactory] https://codenme.tistory.com/111 스프링 핵심원리-고 codenme.tistory.com 위의 글과 이어지는 내용입니다. AOP 소개 - 핵심 기능과 부가 기능 핵심 기능과 부가 기능 애플리케이션 로직은 크게 핵심 기능과 부가 기능으로 나눌 수 있다. 핵심 기능은 해당 객체가 제공하는 고유의 기능이다. 예를 들어서 OrderService 의 핵심 ..

Spring boot

스프링 핵심원리 8 [@Aspect AOP]

https://codenme.tistory.com/114 스프링 핵심원리-고급편 6 [빈 후처리기] https://codenme.tistory.com/113 스프링 핵심원리-고급편 5 [스프링에서의 프록시: beanFactory] https://codenme.tistory.com/111 스프링 핵심원리-고급편 4 [프록시 패턴과 데코레이터 패턴] https://codenme.tistory.com/108 codenme.tistory.com 위의 글과 이어지는 내용 입니다. 스프링 애플리케이션에 프록시를 적용하려면 포인트컷과 어드바이스로 구성되어 있는 어드바이저 ( Advisor )를 만들어서 스프링 빈으로 등록하면 된다. 그러면 나머지는 앞서 배운 자동 프록시 생성기가 모두 자동으로 처리해준다. 자동 프록..

Spring boot

스프링 핵심원리 4 [프록시 패턴과 데코레이터 패턴]

https://codenme.tistory.com/108 스프링 핵심원리-고급편 3 [스프링 디자인 패턴] https://codenme.tistory.com/105 스프링 핵심원리-고급편 2 [쓰레드 로컬을 통한 동시성 문제해결] https://codenme.tistory.com/104 스프링 핵심원리-고급편 1 [예제 생성 및 요구사항 이해] https://www.inflearn.com/cours codenme.tistory.com 위의 글과 이어지는 내용입니다. 실무에선, 다양한 상황에서 프록시를 적용해야하는 상황이 존재한다. 다양한 상황에서 프록시 사용법을 이해하기 위해 다음과 같은 기준으로 기본 예제 프로젝트를 만들어보자. 예제 프로젝트 만들기 예제는 크게 3가지 상황으로 만든다. v1 - 인터페..

Spring boot

김영한 스프링 핵심 원리 - 기본편 정리 글

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8 스프링 핵심 원리 - 기본편 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런 www.inflearn.com 김영한님의 스프링 핵심 원리- 기본편 강의 전체를 정리한 글입니다. 우선 할인 정책에 Rate(퍼센트), Fixed( 정률) 이 존재하고, 각각을 class로 만든 뒤, DiscountPolicy라는 공통의 인터페이스를 상속받는다고 가정해보자. 이제, 실제 코드에서 자바..

코앤미
'스프링' 태그의 글 목록