반응형

Programming/Spring 17

(spring) logback, log4j2 로깅 적용 과정과 xml 파일 차이점 정리

logback, log4j2 로깅 적용 과정과 xml 파일 차이점 정리 해당 포스팅은 스프링 프로젝트에서 로깅 시 사용되는 라이브러리인 'logback(+ logback.xml)'과 'log4j2(+ log4j2.xml)'을 적용하는 각각의 방법과 차이점을 정리한 내용입니다. logback, log4j2 차이점(+ slf4j)먼저 자바 기반 애플리케이션에서 사용되는 로깅 관련 프레임워크는 'log4j', 'logback', 'log4j2'가 있는데요.logback과 log4j2는 둘 다 log4j를 기반으로 하고 있으며, log4j는 2015년 지원이 중단되었기 때문에 logback과 log4j2가 많이 사용되고 있습니다.(각각의 차이점에 대한 내용은 포스팅 맨 하단 관련 자료를 링크해 두었으니 필요하신..

Programming/Spring 2024.02.27

(eclipse) Spring MVC Project 수동 생성 과정 정리

이클립스 Spring MVC Project 수동 생성 과정 정리 이클립스 환경에서 'Oracle JDK 11' + 'STS3(Spring Tools 3 Add-On for Spring Tools)'를 설치한 상태로 'Spring MVC Project'를 생성하려고 했으나, 구글링을 통해 관련된 해결책을 모두 시도해 보았음에도 불구하고 Templates에서 'Spring MVC Project'를 찾을 수 없었습니다. (STS 자체를 설치하여 실행해도 해당 템플릿이 나오지 않았습니다.) eclipse 버전을 낮춰보려고 하다가 프로젝트 구조도 다시 익힐 겸 'Spring MVC Project'를 수동으로 생성하였으며, 그 과정을 정리하였습니다. (아래 과정은 'eclipse 2022-03' 및 'Spring ..

Programming/Spring 2024.02.23

ThreadPoolTaskScheduler를 통해 스케줄러 동작 시간 동적으로 변경하기

ThreadPoolTaskScheduler를 통해 스프링 스케줄러 동작 시간 동적으로 변경하는 방법 기존에는 스케줄링 기능이 필요할 때 '@Scheduler' 어노테이션을 통해 간단하게 스케줄러 기능을 사용했었는데요. 이번에 외부에서 받은 값을 통해 스케줄링 시간을 동적으로 변경하는 기능이 필요하여 알아보던 중 'ThreadPoolTaskScheduler'를 알게 되어 관련 내용을 직접 테스트해 보며 정리한 내용입니다. ... (생략) (root-context.xml 파일 중 스케줄러 관련 task 설정이며, task 외 부분은 생략되었습니다.) 위 코드는 스프링에서 스케줄러를 사용하기 위해 root-context.xml 파일에 task 관련 설정을 추가한 내용입니다. ThreadPoolTaskSched..

Programming/Spring 2024.01.24

(spring) web.xml, root-context.xml, servlet-context.xml 각각의 역할과 차이점

web.xml, root-context.xml, servlet-context.xml 각각의 역할과 차이점 최근 선언적 트랜잭션을 사용하기 위한 설정을 하는 과정에서 'root-context.xml' 파일과 'servlet-context.xml' 파일, 'web.xml' 파일의 역할과 차이점에 대한 궁금증이 생겨 정리한 내용입니다. 본격적인 내용에 앞서 Spring 프로젝트에서 xml 파일은 1. 애플리케이션 컨텍스트를 설정하는 데 사용되거나, 2. 웹 애플리케이션의 구성을 지정하는 데 사용되는데요. 1. 애플리케이션 컨텍스트를 설정하는 xml 파일의 경우에는 빈(Bean)의 생성과 다른 빈에 대한 의존성, AOP 설정, 프로퍼티 설정 등을 포함합니다. (root-context.xml, servlet-co..

Programming/Spring 2024.01.16

mysql mybatis 다중 insert 처리 방법

MySQL MyBatis foreach를 사용한 다중 insert 처리 방법 해당 포스팅은 mysql + mybatis 환경에서 여러 건의 데이터를 insert 해야 할 때 mybatis에서 지원하는 foreach 문을 활용하여 효율성을 높이는 방법에 대한 내용입니다. (아래 예시를 통해 살펴보겠지만 자바 내부적으로 for 문을 사용하여 1건씩 insert 처리를 하는 것은 상당히 비효율적인 방식입니다.) * mysql의 경우 아래 예시 방식이 적용되지만 oracle 등 다른 RDBMS의 경우 방식이 다를 수 있습니다. for 문을 통한 방식의 비효율성 public void insertExample1() { List productList = createProduct(2); for (Map productM..

Programming/Spring 2024.01.14

Spring Legacy @Transactional 동작하지 않는 문제 (tx:annotation-driven)

Spring Legacy Project @Transactional 동작하지 않는 문제 해당 포스팅은 '스프링 프로젝트에서 @Tranactional 어노테이션이 동작하지 않는 문제를 해결'하며 정리한 내용입니다. 결론적으로 트랜잭션이 동작하지 않았던 원인은 'root-context.xml' 파일과 'servlet-context.xml' 파일에 대한 설정이 잘못되었기 때문이었는데요. * 그중에서도 '' 아래 내용을 통해 트랜잭션이 동작하지 않았을 때의 설정과 어떻게 수정하여 해결하였는지 살펴보겠습니다. 트랜잭션이 동작하지 않을 때 설정 (root-context.xml) Spring Proejct에서 트랜잭션을 사용하는 방법을 찾아보니 대부분 다음과 같이 root-context.xml 파일에 'transact..

Programming/Spring 2024.01.11

(spring) 싱글톤 객체의 다중 요청 처리 방법

싱글톤 객체의 다중 요청 처리 방법에 대한 의문점 뜬금없이 RestTemplate은 싱글톤 형식의 스프링 빈으로 등록하여 사용되는데 RestTemplate의 특성(blocking + 동기) 상 먼저 들어온 요청에 대한 응답이 늦게 와서 그동안 물려있다면 다음 요청은 먼저 들어온 요청이 완료되고 수행되는 것인가? 라는 의문이 들었습니다. 그러면 RestTemplate 뿐만 아니라 스프링 빈으로 등록되는 Controller, Service 등의 객체 역시 싱글톤으로 생성되는데, '(멀티스레드 환경에서) 싱글톤 객체에 대해 다중 요청이 처리되는 방식은 무엇일까?'가 궁금하여 찾아본 내용입니다. 싱글톤(Singleton) 패턴과 사용하는 이유 먼저 '싱글톤 패턴(Singleton pattern)'과 싱글톤 패턴..

Programming/Spring 2024.01.03
반응형