
해당 포스트는 Spring.io의 공식 문서를 포함한 레퍼런스와 코드를 통해 Spring Framework의 구조 / 기술에 대해 확인해보고자 하는 포스트입니다. > 1. Spring Framework란? 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크 Sprin

스프링 프레임워크의 핵심 기술 중에서도 가장 중요한 IoC 컨테이너, IoC 컨테이너가 수행하는 DI, 그리고 컨테이너에 의해 관리되는 객체인 빈(Bean)에 대한 내용입니다.

스프링 프레임워크의 핵심 기술 중 하나인 Resource 인터페이스는 하위 수준 리소스에 대한 액세스를 추상화하기 위한 인터페이스입니다.

유효성 검사와 데이터 바인딩, 타입 변환은 공통적으로 데이터의 일관성과 데이터 처리의 유연성을 위해 반드시 필요한 절차이며 스프링 프레임워크는 이러한 절차들을 위한 기술을 제공합니다.

SpEL (Spring Expression Language)는 스프링 프레임워크에서 사용되는 표현 언어로, **다양한 스프링 구성 요소에서 값을 조회하고 조작하는데에 사용**되며, 런타임에 객체 그래프를 쿼리하고 조작하는 것을 지원합니다.

AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)**은 프로그램 구조에 대한 또 다른 사고 방식을 제공하여 객체 지향 프로그래밍을 보완합니다.

널 안정성(Null Safety)은 객체 참조가 null 또는 무효 값을 갖지 않도록 하는 객체 지향 프로그래밍 언어 내에서 보장하는 것을 의미합니다.

데이터 버퍼는 일시적으로 데이터를 저장하거나 전송하는데 사용하는 메모리 공간으로, 주로 입출력 작업이나 데이터 전송 작업에서 데이터를 일시적으로 처리하는데 활용됩니다. 코덱은 인코더와 디코더의 합성어로 데이터를 압축하거나 해제하는데 사용되는 기술 / 장치를 의미합니다

스프링 프레임워크 5.0부터는 스프링에는 spring-jcl 모듈에 구현된 자체 Commons Logging 브리지가 제공됩니다.

사이드 프로젝트 진행 중 Spring Security 6.1 이후로 SecurityFilterChain 설정 방식이 변경되었음을 확인하여 내용을 간단하게 정리했다.

DelegatingPasswordEncoder는 이름 그대로 비밀번호 인코딩을 다른 인코더에 위임을 하는 역할을 한다.

현재 직장의 프로젝트를 진행하면서 HikariCP 관련 설정을 건드리게 되었다. HikariCP는 Spring Boot에서 기본으로 제공하는 데이터 소스이며, 추가 설정의 경우 코드 또는 application.yml(또는 properties)에서 구성할 수 있다.

Quartz Scheduler와 Spring Batch를 연동해서 배치를 돌리던 도중, 동일한 Job이 2번 실행되는 것을 확인하였다. 별다른 설정을 하지 않았는데 모든 Job이 2번 실행되고 있어서 당황스러웠다.

신규 서비스 프로젝트에서 캐시 레이어 사용을 건의하여 Redis를 활용한 캐시 레이어를 구축하였고 그 내용을 정리해본다. 사실 캐시 레이어에 대해서는 재작년에 알아본 적은 있었으나 직접 구축한 것은 이번이 처음이었다.

새로운 환경에 배치 어플리케이션을 배포하고 테스트하던 도중, BATCH_JOB_EXECUTION 테이블에 JOB 관련 데이터가 제대로 적재되지 않는 문제가 발생하였다.

Spring Boot Starter Quartz를 통해 Quartz Scheduler가 Spring Batch의 Job을 인식하게 만들어서 코드 및 Job의 이름으로 간편하게 Spring Batch Job을 실행시킬 수 있게 연동이 가능하다.
실제 실행 시에는 문제가 없지만 테스트를 돌릴 때에만 java.lang.NoSuchMethodError: 'boolean org.json.JSONArray.isEmpty() 예외가 발생하는 문제가 있었다.

회사에서 MyBatis를 사용하고 있는 프로젝트에서 종종 쿼리 오류나 컬럼 매핑 실수와 같은 휴먼 에러 등으로 에러가 발생하는 경우가 종종 있었는데, 컴파일 단계에서 테이블의 컬럼과 객체의 필드 간 매핑 오류를 잡는 QueryDSL을 사용하지 않는다면 MyBatis와

외부 API를 호출하는 배치 작업에서 외부 요청에 대한 Outbound Rate Limiting이 필요하여 Bucket4j를 활용하였던 사례를 정리해본다.

배치 로그를 확인하던 도중 다음과 같은 경고 로그가 발생하였다.