Web/Spring 5

Unable to load class 'javax.persistence.Entity'.

QueryDsl을 사용하려고 보니 javax에서 persistence 를 찾고 있었다. Spring 6부터는 JDK 17과 함께 jakarta ee를 채택했기 때문에 스프링부트를 통해서 jpa를 사용하려고 하고 있었다면 javax가 없어서 당연히 나타나는 에러라고 생각이 들었다. 인터넷에서 검색해보니 classifier를 gradle에서 명시하는 방법이 있어서 jakarta를 명시해서 문제를 해결했다. 이전 설정 implementation "com.querydsl:querydsl-jpa:${queryDslVersion}" annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}" 수정 이후 설정 implementation "com.queryds..

Web/Spring 2023.02.05

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

스프링 빈 생성주기에 대해서 배웠다. 정확히는 스프링에서 싱글톤으로 관리하는 빈에 대한 생성주기였다. 스프링 컨테이너 생성 스프링 컨테이너의 생성은 말 그대로 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