본문 바로가기

spring

(5)
AbstractAggregateRoot의 동작 원리(with @PostUpdate로 맞이한 버그) AbstractAggregationRoot 동작 원리 AbstractAggregateRoot는 DDD(Domain Driven Design)를 구현하기 편리하게 해 주는, 정확히는 도메인 이벤트를 등록하고 가져오기 편리하게 해주는 클래스 정도로 이해하고 있다. (클래스 이름과 다르게 추상 클래스가 아니다.) AbstractAggregateRoot와 같이 무언가에서 편의 기능을 제공해줄 때는 항상 트레이드 오프(trade-off)가 있다. 즉, 편의 기능을 사용하는 만큼 개발 생산성이 올라가지만, 동작 원리를 모른 채 사용하다보면 훗날에 대가를 치르게 되어있다. 이 포스트는 그 대가를 치르고 남기는 포스트다. AbstractAggregateRoot 코드 분석 public class AbstractAggre..
Servlet에 대한 개념없이 스프링을 했네요? (급하게 알아보는 스프링 기반 기술 Servlet, Servlet Context, Application Context, ...) 급하게 알아보는 스프링 기반 기술 이름은 아주 거창하게 "스프링 기반 기술" 이라고 지어봤습니다. 배경 최근에 첫 이직을 했습니다. 낯설기도하고 약간의 긴장감과 약간의 두려움이 합쳐져서 우당탕탕(?)하고 있습니다. 그러다가 이제 회사 프로젝트(소스 코드)를 좀 보려고하니, 스프링(Spring)이었습니다. 스프링부트(Springboot)를 써왔어서 큰 거부감은 없었기때문에 볼 만 하겠지 했는데... 음? Servlet, ServletContext, ApplicationContext, ContextLoaderListener, ... 다양한 ~Context의 향연이 펼쳐지며 아차 싶었습니다. 스프링부트에서도 자바 소스(Java Config)로 설정을 했었지만 Servlet으로 자바 소스 설정을 하니까 기본기(..
Spring에서 Logback을 이용해서 필터없이 별도의 디렉토리에 로그를 남기는 방법 (Logback MDC 사용법, 동적 로그 남기기) 로그를 분류해야하는 경우 스프링에서 로그를 남길 때 대부분 Logback을 사용한다. 보통 한 파일에 모든 로그를 남기기보다는 기능, 모듈별로 로그를 남기거나 어떠한 기준(로그 레벨등...)에 의해 로그를 여러 파일 혹은 여러 디렉토리에 남긴다. 그렇게 구현하려면 logback 설정 파일(logback-spring.xml 같은 파일)에서 property로 여러 로그 경로를 등록해놓고 logger의 패키지를 나눠서 지정하는 것이 일반적인 방법일 것이다. 그러나 위의 방법은 어느정도 패키지 분류가 되어있는 상태여야하고 분류할 기준의 개수가 제한적이어야 한다. 어느정도는 Logback의 filter를 이용한 방법으로 쉽게 처리할 수도 있겠지만, 여전히 같은 패키지, 같은 클래스의 로그에 대해서는 분류하기 어려..
Spring+Apache cxf를 이용한 SOAP XML 통신 튜토리얼 (RESTful api? Web Services, SOAP UI) Spring + Apache cxf로 SOAP 통신하기 apache cxf 프레임워크를 이용하면 SOAP 통신을 할 수 있다. apache cxf의 장점은 spring과의 연동이 가능하다는 점이다. 각설하고 다소 유행(RESTful API - JSON)에 뒤떨어지지만 산업에서 표준 문제로 사용하는 SOAP를 이용해서 XML을 만들어본다. (웹에서 OPEN API, oauth2.0 등에 사용할꺼면 json을 이용하는 RESTful API를 쓰는게 맞다) 아무것도 모르는데 일단 따라하는 tutorial * 개발 환경 JDK1.8 / Spring 4.1.7 / apache cxf 2.6.2 1. spring legacy project 생성 2. apache cxf 2.6.2 버전 다운로드 (https://ar..
Spring 이클립스 encoding 설정 Spring(JAVA eclipse) encoding 설정 이클립스에서 스프링 개발환경 설정하기.1. 이클립스 에디터 인코딩 (encoding)프로젝트를 만들기 전에 사용할 파일들의 인코딩을 설정을 미리 하는 것이 좋다.(나중에 파일 옮겼을 때 깨지거나 할 수 있기 때문에 UTF-8로 미리 통일 시켜놓는 것이 정신건강에 좋음) - eclipse 상단 메뉴의 Window > Preferences 클릭- 왼쪽 상단 검색창에 'encoding' 입력 (검색되는 모든 것들의 인코딩을 UTF-8로 변경하면 완성) - General > Content Types 에서 Java Class File 선택 후 default encoding에 UTF-8을 입력하고 update! - General > Workspace 에서 ..