REST Template vs WebFlux
BACKEND/Spring Boot2024. 11. 5. 14:00REST Template vs WebFlux

미니 프로젝트 때문에 카카오 소셜 로그인을 구현하는데 WebFlux를 사용한다는 분들이 계셔서 차이점을 알아보기 위해 이 글을 작성한다. Rest Template스프링은 오랫동안 Rest Template 을 웹 클라이언트 추상화로 제공해 왔다. 나 역시도 Rest Template을 주로 써서 익숙했다. RestTemplate은 내부적으로 요청당 하나의 쓰레드 모델을 기본으로 하는 자바 서블릿 API를 사용한다. 이 말의 의미는? 자바 서블릿 API는 웹 클라이언트가 응답을 받을 때까지 해당 쓰레드가 차단된다. Rest Template 으로 요청한 한 응답이 끝나기 전까지 쓰레드가 차단된다는 뜻이다. 이 방식의 문제점은, 이렇게 차단된 코드로 인해 각 스레드가 어느정도의 메모리와 CPU 싸이클을 소비하기 ..

[자바 ORM 표준 JPA 프로그래밍 - 기본편] 영속성 컨텍스트
BACKEND/Spring Boot2024. 10. 30. 10:54[자바 ORM 표준 JPA 프로그래밍 - 기본편] 영속성 컨텍스트

엔티티 매니저 팩토리엔티티 매니저를 통해서 웹 애플리케이션에서 고객 요청이 올 때마다 엔티티 매니저들을 생성한다.엔티티 매니저들은 내부적으로 데이터 커넥션 풀을 사용해서 디비를 사용한다.영속성 컨텍스트란 무엇일까?엔티티 영구 저장 환경→ JPA를 이해하는데 가장 중요한 용어entityManager.persist(entity);는 DB에 저장하는 게 아니라, 엔티티 매니저를 통해서 엔티티를 영속성 컨텍스트라는 곳에 저장한다는 뜻이다.영속성 컨텍스트의 개념영속성 컨텍스트는 눈에 보이지 않는 논리적인 개념이다.엔티티 매니저를 통해서 영속성 컨텍스트에 접근한다.엔티티 매니저 생성 → 영속성 컨텍스트 생성→ 1:1 로 생성이 된다.엔티티의 생명주기1. 비영속 (new/transient)영속성 컨텍스트와 전혀 관계..

[자바 ORM 표준 JPA 프로그래밍 - 기본편] 1일 차 JPA에 대해서
BACKEND/Spring Boot2024. 10. 21. 19:55[자바 ORM 표준 JPA 프로그래밍 - 기본편] 1일 차 JPA에 대해서

JPAobject relational mapping객체랑 관계형 데이터베이스를 매핑해주는 것마치 자바 컬렉션에 저장하듯이 해준다.왜 사용해야 하는가SQL 중심적인 개발에서 객체 중심 개발을 할 수 있다.생산성유지보수패러다임의 불일치 해결성능표준데이터 접근 추상화와 벤더 독립성표준메소드저장: jpa.persist()조회: jpa.find()수정: member.setName()삭제: jpa.remove()JPA가 패러다임의 불일치를 해결해준다.1. JPA와 상속(저장)개발자는 객체인 앨범만 저장하면 됨. jpa가 알아서 쿼리문을 날려준다. 2. JPA 상속(조회)원래는 테이블이랑 앨범을 조인한다음에 가져와야 하지만, jpa는 알아서 분석 후 받아와준다.3. 신뢰할 수 있는 엔티티가 되어 계층 신뢰 가능JPA..

Spring Container는 어떻게 생성될까
BACKEND/Spring Boot2024. 9. 22. 18:01Spring Container는 어떻게 생성될까

스프링 컨테이너는 빈 생명 주기를 관리한다. 빈을 관리하기 위해 IOC가 이용된다. 스프링 컨테이너에는 빈 팩토리가 있고, ApplicationContext는 이를 상속한다. 이 두개의 컨테이너로 의존성이 주입된 빈들을 제어할 수 있다.   WebApplication이 실행되면, WAS(Tomcat, ServletContainer per process)에 의해 web.xml이 로딩된다.web.xml에 등록되어있는 ContextLoaderListener가 자바 클래스 파일로 생성된다. ContextLoaderListener 요 친구는 ServletContextListener를 구현한 것으로써, Application Context(스프링 빈이 등록되고 공유되는 곳) 를 생성한다.ApplicationConte..

Tomcat은 어떻게 동작하는가
BACKEND/Spring Boot2024. 9. 22. 16:50Tomcat은 어떻게 동작하는가

갑자기 스프링 시큐리티 다루다가 DispatcherServlet이 중앙에서 모든 HTTP 요청을 처리하고 적절한 핸들러에 전달해준다..이걸 보고..그럼 접속하는 사용자가 엄청 많은데, 많은 요청이 갑자기 들어오게 된다면 이 많은 요청을 하나의 핸들러가 다 처리하는건가??의문이 들어서 열심히 찾아봤다.이런 답변을 보았다.톰캣(WAS)은 하나의 프로세스에서 동작하며, thread pool을 만들어 HttpRequest가 들어왔을 때 하나씩 쓰레드를 재사용하거나 재배정한다. 요청이 많아지면, 큐에 쌓아두고 쓰레드가 만들어지는 일반적인 Thread pool 의 동작을 한다. 본능적으로 생각했다..thread???는... 운영체제랑 객프 수업에서 들어봤는데,, 정확히 알지 못했다,,,그래서 기초부터 하나하나 찾아..

테스트 스텁과 목 오브젝트의 차이점
BACKEND/Spring Boot2024. 9. 19. 00:03테스트 스텁과 목 오브젝트의 차이점

두 가지를 포함한 범위인 테스트 대역을 먼저 정리한다.테스트 대역(Test Double) 이란?테스트를 하려는 객체가 다른 객체들과 여러 관계가 엮여있어 사용하기 어려울 때, 대체할 수 있는 객체를 말한다.테스트 대역은 Dummy, Stub, Spy, Mock, Fake로 나눌 수 있다.Dummy 객체는 전달되지만 실제로 사용되지는 않는다. 일반적으로 매개변수 목록을 채운다.Fake실제로 작동하나 일반적으로 프로덕션에는 적합하지 않는 방식을 취한다.Stub테스트 중 만들어진 호출에 미리 준비된 답변을 제공하고 일반적으로 테스트를 위해 프로그래밍된 것 외에는 전혀 응답하지 않는다.Spy그들이 어떻게 호출되었는지에 따라 일부 정보를 기록하는 스텁이다.Mock호출될 것으로 예상되는 사양을 형성하는 기댓값으로..

image