java, spring 환경에서 객체를 어떻게 생성할 것인가
— java, spring, object — 10 min read
객체 생성 방식에 대한 고민
팀 내 객체 생성 방식이 제각각인 상황을 목격하게 되었다. 프로젝트의 복잡성이 날로 증가하면서 어떠한 변경이 추가될 떄, 일관되지 않은 객체 생성 방식 때문에 수정이 번거로워 진다. 이를 어떻게 하면 일관된 방식으로 통일할 수 있을지에 대한 고민에서 이 글을 작성하게 되었다.
단순하지만 근본적인 질문에서 시작해보자. Java로 개발할 때 객체를 어떻게 생성해야 할까? 여기서 말하는 객체가 모호하게 들린다면, 클래스의 인스턴스를 어떻게 생성할 것인가로 바꿔 생각해도 좋다.
논의의 범위를 좀 더 구체적으로 좁혀보자면, 스프링 부트 기반의 웹 애플리케이션을 개발할 때의 객체 생성 방식에 대해 이야기해보고자 한다.
객체를 생성하게 되는 시점들
스프링으로 개발하면서 객체를 생성하게 되는 시점 두 가지
- 개발자가 명시적으로 의식하면서 처리하는 경우로, 주로 레이어 간 개념적인 클래스를 생성할 때이다.
1// 서비스 레이어에서 엔티티를 DTO로 변환하는 경우2OrderDto orderDto = new OrderDto(order.getId(), order.getCustomerName());34// 레포지토리에서 조회한 결과를 도메인 객체로 변환하는 경우5Order order = Order.createFrom(orderEntity);
- 잘 의식하지 않고 자동화 되는 부분도 있다. 보통 프레임워크나 라이브러리에 의해 자동화되어 처리되는 경우다. 주로 외부에서 애플리케이션으로 데이터가 유입될 때 발생한다.
자동으로 객체 생성이 되는 경우