본문 바로가기

프레임워크36

[Spring]싱글톤 빈이 동시 요청을 처리하는 방법 Spring에서 여러 스레드에서 동일한 빈 인스턴스를 사용할 수 있는 이유Spring이 여러 스레드에서 동일한 빈 인스턴스를 사용할 수 있는 이유는 각 스레드에 대해 Java가 개인 스택 메모리를 생성하기 때문입니다. 즉, 멤버 변수를 사용하지 않고 지역 변수만 사용하면, 각 요청은 독립적인 데이터 공간을 가지므로 동시성 문제가 발생하지 않습니다. 각 스레드에 대해 Java가 개인 스택 메모리를 생성하기 때문입니다.스택 메모리는 스레드 실행 중 메서드 내부에서 사용되는 로컬 변수의 상태를 저장하는 역할을 합니다.이런 방식으로 Java는 병렬로 실행되는 스레드가 서로의 변수를 덮어쓰지 않도록 합니다.Spring의 싱글턴 빈은 힙 메모리에 생성되지만, 동기화나 개별 스레드 제한 없이 공유되므로 여러 스레드가.. 2025. 2. 2.
[JAP] Querydsl 및 설정 테스트 코드 Querydsl란?스프링부트 + JPA + 스프링 DATA JPA 합쳐서 사용하지만 복잡한 쿼리, 동적 쿼리를 구현할때 문제가 됨이를 해결하는게 Querydsl입니다. 또 다른 장점으로는 Java 코드로 Query를 작성하기 때문에 문법 오류를 컴파일 시점에 딱 잡아줍니다.또한 Querydsl은 파라미터 바인딩 자동 처리를 해줍니다. Querydsl 테스트 코드package study.querydsl;import com.querydsl.jpa.impl.JPAQueryFactory;import jakarta.persistence.EntityManager;import org.assertj.core.api.Assertions;import org.junit.jupiter.api.Test;import org.sp.. 2024. 11. 16.
Spring Scheduler와 Spring Quartz 차이 스케줄러러를 사용할 일이 있었는데 찾아 보니까 Spring에서 Spring Scheduler와 Spring Quartz라는 2가지 방식으로 제공됩니다. Spring Scheduler 제가 프로젝트에서 채택했던 방식입니다. 사용법이 쉽고 Spring Boot starter에서 지원하기 때문에 따로 의존성을 추가 하지 않고 어노테이션만 추가하면 사용할수 있습니다. ScheduledConfig.java @Configuration @EnableAsync @EnableScheduling public class ScheduledConfig implements SchedulingConfigurer { @Override public void configureTasks(ScheduledTaskRegistrar taskR.. 2024. 4. 13.
Mockito와 BDDMockito 테스트 코드 작성중에 의문이 생겼습니다. mock 객체를 when().thenReturn()을 통해 사용하고, 어떤 부분에서는 given().willReturn()을 통해 사용하는 것이었다. import 문을 확인해보니 전자는 org.mockito.Mockito를 import하고 후자는 org.mockito.BDDMockito를 import한다. Mockito? spring은 객체간의 의존성을 관리해주는데 이 의존성은 테스트 코드 단위테스트를 작성할때 문제가 생긴다. 의존성을 가지는 다른 객체에 의해 테스트 결과가 영향을 받는다. 그래서 내가 원하는 동작만 하도록 하는것이 Mock 객체다. 이를 편하게 사용하도록 지원하는것이 Mockito 이다. 예제 소스 import org.junit.jupiter.a.. 2024. 3. 20.