본문 바로가기

Spring11

[Spring] 리액티브(Reactive) 프로그래밍 Overview 스프링 5 버전이 도입되면서, 스프링 프레임워크는 새로운 도전에 직면하게 되는데 바로 "리액티브 프로그래밍"이다. 스프링 프레임워크 오픈소스를 리딩하고 있는 "Pivotal"에서는 오래전부터 "리액티브 프로그래밍"을 준비하고 있었는데, 프로젝트 이름은 "Reactor" 이다. "Reactor" 는 "Reactive Streams"의 구현체로서, 스프링 5 리액티브 프로그래밍의 핵심 라이브러리이다. 많은 개발자들이 Reactor 를 이해하지 않고, Webflux 를 성급하게 도입하려는 시도를 많이 하는데, 바람직하지 않다고 생각한다. "Reactor"를 먼저 이해하고 Webflux 를 도입해야 한다는 점을 반드시 명심하길 바란다. Reactive Programming(리액티브 프로그래밍) .. 2022. 8. 11.
[Spring] AOP 개념, 적용, 주의사항 ㄴ본 포스팅은 인프런 김영한님의 ‘스프링 핵심 원리 - 고급편’ 강의를 듣고 정리한 내용을 바탕으로 복습을 위해 작성하였습니다. [강의 링크] 1. AOP란? Spring의 핵심 개념 중 하나인 DI가 애플리케이션 모듈들 간의 결합도를 낮춘다면, AOP(Aspect-Oriented Programming)는 핵심 로직과 부가 기능을 분리하여 애플리케이션 전체에 걸쳐 사용되는 부가 기능을 모듈화하여 재사용할 수 있도록 지원하는 것 입니다. Aspect-Oriented Programming이란 단어를 번역하면 관점(관심) 지향 프로그래밍 이 됩니다. 프로젝트 구조를 바라보는 관점을 바꿔보자는 의미입니다. 각각의 Service의 핵심기능에서 바라보았을 때 User과 Order는 공통된 요소가 없습니다. 하지만 .. 2022. 8. 8.
[Spring] 프록시 팩토리와 빈 후처리기 본 포스팅은 인프런 김영한님의 ‘스프링 핵심 원리 - 고급편’ 강의를 듣고 정리한 내용을 바탕으로 복습을 위해 작성하였습니다. [강의 링크] 1. 프록시 팩토리 JDK 동적 프록시 인터페이스 기반 CGLIB 구체 클래스 기반 JDK 동적 프록시와 CGLIB에서 기반으로 하는 대상이 다르기 때문에 같은 기능을 제공하기 위해서는 JDK 동적 프록시가 제공하는 InvocationHandler와 CGLIB가 제공하는 MethodInterceptor로 따로 만들고 중복으로 관리해야하는 문제가 있습니다. 스프링에서 제공하는 프록시 팩토리는 이 문제를 해결해줍니다. 프록시 팩토리는 인터페이스가 있으면 JDK 동적 프록시를 사용하고, 클래스만 있다면 CGLIB을 사용합니다.(설정 변경 가능) 프록시 팩토리가 조건에 맞.. 2022. 7. 29.
[Spring] MVC - 기본기능 및 전체구조 본 포스팅은 인프런 김영한님의 ‘스프링 MVC 1편’ 강의를 듣고 정리한 내용을 바탕으로 복습을 위해 작성하였습니다 [강의 링크] 1. 요청 매핑 RequestMapping @RestController @SLF4J public class MappingController { @RequestMapping("/hello-basic") public String helloBasic() { log.info("helloBasic"); return "ok"; } } URL로 호출이 오면 해당 메서드가 실행된다. @RequestMapping 애노테이션의 경우, 모든 HTTP 메서드를 허용한다. 이런 메서드를 다음과 같이 설정해줄 수가 있다. @RequestMapping(value = "/hello-basic", meth.. 2022. 7. 25.
[Spring] 컨테이너와 스프링 빈 본 포스팅은 인프런 김영한님의 ‘스프링 핵심 원리 - 기본편’ 강의를 듣고 정리한 내용을 바탕으로 복습을 위해 작성하였습니다. [강의 링크] 스프링 컨테이너 생성 ApplicationContext 를 스프링 컨테이너라 한다. ApplicationContext 는 인터페이스이다. 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. 직전에 AppConfig 를 사용했던 방식이 애노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만든 것이다. 자바 설정 클래스를 기반으로 스프링 컨테이너( ApplicationContext )를 만들어보자. new AnnotationConfigApplicationContext(AppConfig.class); 이 클래스는 .. 2022. 7. 11.