[Spring Boot] Spring Batch Partitioning을 통해 Step을 분리해보자
2023. 7. 8. 14:21
Java/Spring Boot
Spring Batch 애플리케이션을 작업하다보면 이 애플리케이션이 처리해야하는 데이터가 많아졌을 때 다음과 같은 고민을 어떻게 해결할 수 있을지 궁금했습니다. 기존 코드 변경을 최소화하며 단일 서버의 처리량을 최대한 높이는 방법이 없을까? 동시성을 최소한으로 신경쓰고 처리량을 높일수는 없을까? 위 궁금증을 해소할 수 있는 방법을 찾던 중 spring batch의 partitioning 기능이 있다는 것을 알게됐습니다. 이번 포스팅에서는 위 궁금증을 spring batch에서 어떻게 해소해주는지 살펴보겠습니다. 코드는 아래 링크에서 확인해주세요. Main 브랜치에 partitioning을 적용하고 no-partitioning 브랜치는 일반적인 batch를 구현하였습니다. GitHub - seonwoo96..
[Spring Boot] CRUD Project Template
2022. 11. 17. 23:12
Java/Spring Boot
매번 스프링 부트를 활용해서 새로운 프로젝트를 진행할 때마다 기본 환경 구성이 너무 귀찮았습니다. 그래서 저는 제가 자주 사용하는 기술을 모아서 하나의 템플릿으로 만들어서 사용하고 있는데요, 이 프로젝트를 공유드리고자 합니다. https://github.com/seonwoo960000/spring-boot-all-in-one GitHub - seonwoo960000/spring-boot-all-in-one: A spring boot project with default dependencies A spring boot project with default dependencies . Contribute to seonwoo960000/spring-boot-all-in-one development by crea..
[Spring Boot]Spring Boot JPA는 MySQL에서 어떤 쿼리를 실행시킬까?
2022. 10. 29. 09:53
Java/Spring Boot
Spring Boot JPA를 사용하던 중 실제로 어떤 쿼리가 실행되는지 문뜩 궁금해졌습니다. 그래서 MySQL에서 수행되는 실제 쿼리를 살펴봤는데요, 이번 포스팅을 통해 공유해보고자 합니다. MySql 쿼리 실행 기록 MySql은 쿼리의 실행 기록을 확인할 수 있는 방법이 있습니다. 아래와 같은 쿼리를 실행시키면 general_log 값을 알 수 있습니다. general_log가 OFF일 경우 쿼리 실행 기록이 남지 않습니다. 만약 general_log가 ON이라면 쿼리가 실행될 때마다 general_log_file에 쿼리 실행 이력이 저장됩니다. 그럼 general_log를 ON으로 설정하고 쿼리의 실행 이력이 어떻게 저장되는지 살펴보겠습니다. ※ 주의 ) general_log를 ON 값으로 설정하고..
[Spring Boot] @Transactional이 COMMIT을 실행하는 코드까지
2022. 8. 6. 14:59
Java/Spring Boot
Spring Boot의 @Transactional 어노테이션은 트랜잭션을 사용자가 편리하게 사용할 수 있도록 제공되는 어노테이션입니다. @Transactional 어노테이션을 통해 해당 트랜잭션의 다양한 옵션을 설정할 수 있습니다(propagation, isolation level 등). 이번 포스팅에서는 @Transactional 어노테이션이 어떻게 동작하는지 알아보겠습니다. Spring Boot는 AOP(Aspect Oriented Programming) 기법을 통해 공통 관심사를 Aspect의 형태로 처리합니다. @Transactional 기능은 데이터베이스와 상호작용하는 다양한 메서드들의 공통 관심사인 트랜잭션을 분리해서 처리하는 점에서 AOP에 포함된다고 볼 수 있습니다. 그럼 AOP를 구현하는..
[Spring Boot] refresh context 차근차근 따라가기
2022. 5. 11. 08:19
Java/Spring Boot
해당 포스팅은 [Spring Boot] 대체 어떻게 실행되는걸까 ? 포스팅의 일부입니다. 2022.05.01 - [Java] - [Spring Boot] 대체 어떻게 실행되는걸까 ? [Spring Boot] 대체 어떻게 실행되는걸까 ? beanFactory.registerSingleton("springApplicationArguments", applicationArguments); Spring boot를 사용하다 보면 이 마법 같은 프레임워크가 어떻게 동작하는지 궁금할 때가 있습니다. Spring boot는 어떻게.. code-run.tistory.com Spring Boot의 ApplicationContext가 초기화되는 과정에서 refresh 과정이 있습니다. 이번 포스팅을 통해 refresh가 어떻..
[Spring Boot] Bean이 살고있는 집 ApplicationContext 기능 살펴보기
2022. 5. 5. 12:51
Java/Spring Boot
해당 포스팅은 [Spring Boot] 대체 어떻게 실행되는걸까 ? 포스팅의 일부입니다. 2022.05.01 - [Java] - [Spring Boot] 대체 어떻게 실행되는걸까 ? [Spring Boot] 대체 어떻게 실행되는걸까 ? beanFactory.registerSingleton("springApplicationArguments", applicationArguments); Spring boot를 사용하다 보면 이 마법 같은 프레임워크가 어떻게 동작하는지 궁금할 때가 있습니다. Spring boot는 어떻게.. code-run.tistory.com ApplicationContext의 기능 ApplicationContext는 Spring의 advanced container입니다. Applicatio..
[Spring Boot] 알쏭달쏭한 환경변수 설정원리
2022. 5. 1. 21:40
Java/Spring Boot
해당 포스팅은 [Spring Boot] 대체 어떻게 실행되는 걸까? 포스팅의 일부입니다. 2022.05.01 - [Java] - [Spring Boot] 대체 어떻게 실행되는 걸까? [Spring Boot] 대체 어떻게 실행되는걸까 ? beanFactory.registerSingleton("springApplicationArguments", applicationArguments); Spring boot를 사용하다 보면 이 마법 같은 프레임워크가 어떻게 동작하는지 궁금할 때가 있습니다. Spring boot는 어떻게.. code-run.tistory.com Spring boot의 환경변수를 설정하는 방법은 다양합니다. application.properties 설정, system의 환경변수 또는 comman..
[Spring Boot] 대체 어떻게 실행되는걸까 ?
2022. 5. 1. 08:42
Java/Spring Boot
Spring boot를 사용하다 보면 이 마법 같은 프레임워크가 어떻게 동작하는지 궁금할 때가 있습니다. Spring boot는 어떻게 실행되는지, 자동 설정은 어떻게 수행되는지 등... Spring boot를 자주 사용하지만 정작 내부 원리를 알지 못하니 겉핥기 수준으로 Spring boot를 사용하고 있다는 느낌을 떨칠 수가 없습니다. 그래서 이번 포스팅을 계기로 조금 내부 원리를 이해해보고자 합니다. Spring boot도 결국에는 Java program이기 때문에 시작점은 main()입니다. 따라서 SpringApplication.run(SpringBootAutowireApplication.class, args); 가 Spring boot의 시작 지점입니다. @SpringBootApplicatio..