스프링 5

스프링 웹플럭스 좀 더 파보기

이 글을 쓰는 목적 코틀린 스프링을 사용하는 이유 코틀린 스프링을 백엔드 개발할때 쓰는 이유를 적은 글을 쓰며 백엔드 개발을 시작할때 최근에 가장 많이 논의되는 언어가 코틀린과 타입스크립트라고 생각을 하고 있는데, 개인적으로는 서로 blog.mayleaf.dev 스프링 MVC, 스프링 웹플럭스 두 생태계가 있는데 MVC는 멀티쓰레드 기반이고, 웹플럭스는 그러면 왜 쓰는걸까요? 오늘은 웹플럭스를 사용 하는 이유를 공유해보고자 이 글을 씁니다. 이 글의 내용 "스프링 웹플럭스" 쓰는 이유가 뭐냐고 물어보면 저는 리액티브 프로그래밍을 하기 위해서 사용한다고 이야기할 것 같습니다. 그래서 리액티브 프로그래밍이 무엇인지, 왜 스프링 웹플럭스를 사용하는지를 적었습니다. 본문 위 그림은 리액티브 선언문에서 발췌해서 ..

Kotlin 2024.03.22

MockKInjects 및 Lateinit 사용을 통한 Kotlin 테스트 이슈 해결하기

글을 쓰게 된 이유 이번 블로그 글에서는 Kotlin 테스트를 진행하면서, 특히 MockKInjects를 사용하면서 마주친 이슈를 공유하려 합니다. 이 문제는 테스트 클래스 생성자의 실행과 Injectmock에서 발생하는 버그와 관련이 있습니다. 디버깅하면서 봤던 코드들을 공유하면 다른 분들이 보기에 좋겠다 생각이 들어서 공유하기 위해 글을 씁니다. 문제 상황 MockKInjects를 작업하는 동안 테스트 클래스 생성자를 호출하면 Injectmock와 관련된 오류가 발생하는 걸 봤습니다. 오류 메시지는 다음과 같았습니다: No ParameterResolver registered for parameter [%s] in %s [%s]. injectmocks에 주입해줄 파라미터들을 못찾는 이슈였는데, 저같은 ..

Kotlin 2023.12.13

스프링에서 싱글톤으로 관리하는 빈의 생성주기

스프링 빈 생성주기에 대해서 배웠다. 정확히는 스프링에서 싱글톤으로 관리하는 빈에 대한 생성주기였다. 스프링 컨테이너 생성 스프링 컨테이너의 생성은 말 그대로 Application Context(이하 스프링 컨테이너)의 생성이다. 빈 객체 등록 스프링 컨테이너가 생성되면 빈 객체 등록이 이뤄진다. 이때, 빈이 생성자 주입을 사용하도록 되어있다면, 필요한 의존관계가 빈 객체등록 시점에서 이뤄진다. 의존관계 주입 만약 모든 의존관계가 다 생성자 등록이라면 빈 객체등록이 끝나는 시점에 의존관계 주입도 이미 끝나있을 것이다. 이 의존관계 주입단계에서는 수정자 주입이나, 필드주입을 받는 빈이 주입을 받는다. 초기화 콜백 위 단계에서 의존관계가 주입된 빈들은 초기화 콜백이 수행된다. 초기화 콜백은 Initializ..

Web/Spring 2023.01.26

스프링 컨테이너

기존에 사용했던 Nest.js와 Flutter 에서 의존관계를 관리했던 방법 Nest.js를 쓰거나 Flutter 로 어플리케이션 개발을 할때는 DI를 구현해서 사용했다. Flutter 로 DI를 구현해서 사용했을때에는 Service Locator라는 라이브러리를 사용해서 어플리케이션 실행 시점에 ServiceLocatorInitializer(가칭)에서 의존관계를 조립해서 모든 의존관계를 ServiceLocator에 주입해두고 꺼내서 썼다. 어디에서 어떻게 의존관계가 관리되는지는 명확했다. Nest.js를 쓸때는 초기화된 결과들이 저장되는 곳은 몰라도, @Module을 통해서 어떤 모듈이 서로 참조하고, 노출되는 Provider는 어떤것이 있는지 알 수 있었다. 스프링은 어떻게 의존관계를 관리하지? 내가..

Web/Spring 2023.01.24