본문 바로가기
반응형

전체 글95

스프링 빈 생성 과정 분석 [1] - IOC 컨텍스트(BeanFactory) ApplicationContext(IOC 컨텍스트) 소개IOC (Inversion of Control, 제어의 역전)제어의 역전이란 프로그램의 제어 흐름 구조를 바꾸는 것이다.프로그램의 제어권이 개발자가 작성한 코드에 있는 것이 아니라 외부에 존재하는 것을 말한다.프로그램의 제어권에는 객체 생성, 사용할 객체 결정,  객체 주입, 메서드 호출 등 프로그래밍 언어로 표현할 수 있는 모든 행위를 포함한다.  스프링에서는 DI(Dependency Injection)라는 기능을 제공하는데 객체를 생성하고, 의존 타입 객체를 결정하고, 객체를 주입해준다. 이 책임을 수행하는 것이 ApplicationContext이다.  ApplicationContext가 객체 생성과 의존객체를 주입해주기 때문.. 2024. 4. 20.
코틀린 querydsl, mapstruct 생성자에 따른 동작 방식 코틀린, 스프링, jpa, querydsl 환경에서 불변객체를 만드는 방법에 대해 알아보겠다. 자바 위주의 스프링, querydsl, mapstruct 개념이나 사용법을 그대로 받아들이려고 하면 코틀린에서 객체의 불변성이 깨지거나 디폴트값 선언으로 비즈니스 규칙을 깨트리는 생성자들이 생겨날 수 있다. 나의 경우도 그러하였는데 코틀린, 스프링, querydsl, mapstruct 환경에서 객체 불변성을 지키며 디폴트값을 제거하는 방법에 대해 공유하겠다. Querydsl을 통해 매핑받는 객체 디폴트 값 없애기 projection.bean, projection.fields projection.bean 방식은 자바 빈 객체 형태만 받을 수 있다. 허나 세터 메서드가 없어도 리플렉션을 통해 매핑이 가능하다고 한다.. 2024. 3. 16.
코틀린 JPA Entity 작성법 자바에서 Entity를 작성하다 코틀린에서 Entity를 작성하려고 하면 자바와 다른 방식으로 인해 Entity를 작성하는 것이 쉽지가 않다. 클래스 작성 키워드, 변수 선언 키워드, 생성자 선언 방식, 디폴트값 정의 등 자바에 존재하지 않거나 다른 방식으로 인해 Entity 클래스 설계시 고려해야할 부분이 많다. 코틀린에서 제공하는 다양한 방식으로 클래스를 설계하며 각 클래스가 Entity의 조건에 맞는지 도메인 객체를 잘 표현하는지 확인해보며 Best Practice Entity 설계 패턴을 찾아나가보도록 하겠다. 우선 Entity의 조건에 대해 알아보겠다.(https://docs.oracle.com/javaee/5/tutorial/doc/bnbqa.html) 클래스의 접근 지정자는 public 또는.. 2024. 3. 13.
멀티모듈로 헥사고날 아키텍쳐 구현하기[1] - 모듈 구성 이전 포스팅에서 헥사고날 아키텍쳐에 대하여 설명하였다. 헥사고날 아키텍쳐 패턴을 멀티모듈 방식으로 구성한 방식에 대해 공유해보겠다. 코틀린 스프링 부트 환경에서 구현하였으니 코틀린 스프링 부트 기준으로 설명을 하겠다. 헥사고날 아키텍쳐의 핵심인 application layer는 순수 pojo 방식을 지향한다. 그리고 어떠한 라이브러리나 adapter(컨트롤러, repository, 3rd-party-api)의 의존도 갖지 않는다. 이번 포스팅에서는 모듈구성에 관한 내용을 다루고, 다음 포스팅에서 순수 pojo 방식으로 application layer를 구성하는 방법에 대해 다루도록 하겠다. 목차 모듈 구성 패키지 구성 gradle 설정 모듈 구성 헥사고날 아키텍쳐를 간단하게 설명하면 비즈니스 로직을 갖는.. 2024. 3. 10.
반응형