FrameWork/Spring (총 22개) 썸네일형 리스트형 Spring - AOP를 이용해 도메인과 Mobile Push 알림 기능을 분리하자 push aop 이번 포스팅에서는, App Server에서 도메인 기능과 완전히 분리하여, Push 알림 요청 기능을 확장한 과정을 기술하려고 합니다. 도메인과 Push 알림을 분리하자Push 알림은 도메인과 완전히 상관이 없는 개념입니다. 따라서, Push 알림이 도메인 로직에 의존해서도, 도메인 로직이 Push 알림에 의존해서도 안됩니다. 1. 기존의 아키텍쳐기존의 아키텍쳐는 DDD의 Layered Architecture를 이용해 설계가 되어있었습니다.각 계층은 아래로의 의존만을 가지며, infra(저수준 모듈의 구현) 계층의 필요한 구현은 DIP를 이용해 Application, Domain이 infra(저수준 모듈)에 의존하는 것이 아니라, infra가 고수준 모듈에 의존하도록 했습니다. 2. 문제.. Spring - classpath란? Intellij에서 classpath 추가하기 Intellij에서 간단하게 beanConfiguration Intellij에서 간단하게 beanConfiguration.xml 파일을 생성하고 테스트를 위해서 실행을 하려는 도중 beanConfiguration.xml 파일이 위치한 디렉토리를 classpath:로 인식시키는 방법을 찾게 되었습니다. 운이 좋게 짧은 시간의 삽질을 통해 방법을 알아냈습니다. 1. ClassPath란?ClassPath란 "자바 가상머신이 프로그램을 실행할때 Class파일을 찾는데 기준이 되는 경로"를 의미합니다. Classpath를 지정하지 않는다면, 자바가상머신이 위치한 디렉토리에서만 클래스들을 찾게 됩니다. spring 에서는 이 classpath를 통해서 필요한 resource를 가져와 사용하게됩니다. 2. Intel.. Spring - IoC 컨테이너의 기능 - 7 (Resource 추상화 - ResourceLoader) Spring의 Resource 추상화 Resource 추상화Resource 추상화라고 하니까 뭔가 말이 거창하고 어려워 보이네요. 간단하게 의미를 정의해보겠습니다. Resource 추상화는 java.net.URL을 추상화 한 것 입니다. 이게 무슨 뜻이죠.. 우선 java.net.URL이 무엇인지를 알아보아야 할 것 같습니다. java.net.URL 이란우선 URL은 인터넷상의 주소를 표현하는 방법을 의미합니다. URL 클래스는 웹 상에 존재하는 자원에 접근할 때 사용하는 클래스입니다. URL 클래스를 사용하면 위와 같이 간단히 웹상의 자원을 가져올 수 있습니다. 이유java.net.URL을 왜 추상화 했을까요? 기존 java.net.URL 클래스에는 classpath를 기준으로 resource를 가져오.. Spring - Lombok 이란?, Intellij Lombok 설정방법 Lombok 이란 Spring에 대한 기초와 원리에 대한 개념이 부족한것 같아 시작한 Spring 포스팅이 어느덧 30개 가량이 넘어가고 있습니다. Spring에 대한 포스팅을 계속 하면서 이제는 프로젝트를 다시 한번 건드려보자는 생각이 들어 시작하려는 도중 아주 좋은 라이브러리를 발견하여 소개하려고 합니다. 바로 Lombok이란 것입니다. Lombok 1. 왜 쓰죠?새로운 라이브러리를 보았을때에는 항상 왜 사용하는지를 파악하는 것이 우선인것 같습니다. 당연시 여기는 것들이 가끔은 당연하지 않은 경우가 있습니다.. 왜 쓸까를 한번 생각해 보시죠. Lombok 이전의 코드우리는 프로젝트를 진행하면서 DB와 데이터를 주고받기 위해 DTO, VO Class들을 작성하여 데이터를 손쉽게 다루게 됩니다. 그런데 .. Spring - IoC 컨테이너의 기능 - 6 (DataBinding 추상화, Converter, Formatter 란?) 데이터 바인딩 , 컨버터 1. 데이터 바인딩이란?사용자가 입력한 값을 어플리케이션에서 사용하는 도메인으로 매핑하는 기능을 일컫습니다. Spring MVC에서 Controller 안의 Mapping 메소드들에서 사용자가 전달한 값을 자동으로 매개변수에 입력된 Command 객체로 변환되는 것도 이 데이터바인딩을 통해서 가능한 것입니다. 그렇다면 데이터 바인딩이 왜 필요할까요? 1.1 왜 바인딩이 필요한가?사용자가 입력한 값은 서버에서 기본적으로 String으로 인식을 합니다. HttpServletRequest 객체의 getParameter() 메소드가 반환하는 값이 String인 것을 보면 알 수 있습니다. 이 때문에 서버 프로그램에서 이 데이터를 상황에 맞게 처리하기 위해서는 특정 객체로 맵핑을 할 필요.. Spring - IoC 컨테이너의 기능 - 5 (객체의 값 검증 Validation, Errors) Validation Validation에 대해서 알아보도록 하겠습니다. 1. Validation 이란?어플리케이션에서 사용하는 객체들을 검증할 때 사용하는 인터페이스 입니다! 실제로는 직접 구현하여 사용하는 경우보다는 간단히 검증을 위한 @을 사용하고, @으로 검증을 할 수 없는 복잡한 검증 과정이 필요한 경우에 사용자가 검증을 커스텀하기 위해 구현합니다. 바로 예제를 보겠습니다. 1. Eventxpublic class Event { Integer num; // null 이면 안됨 String title; public Integer getNum() { return num; } public void setNum(Integer num) { this.num = num; } public String ge.. Spring - IoC 컨테이너의 기능 - 4 (ApplicationEventPublisher 란?) IoC 컨테이너의 기능 중 하나인 ApplicationEventPublisher에 대해서 알아보겠습니다 1. ApplicationEvnetPublisher가 뭐죠?IoC 컨테이너의 기능 중 하나인 ApplicationEventPublisher에 대해서 알아보겠습니다. 이 기능은 마치 디자인 패턴 중 하나인 Observer Pattern과 유사한 기능을 합니다. 다시 말해 Spring Framework를 통해 손쉽게 Observer Pattern을 구현하는 것입니다. 2. 언제 사용하나요?(관련 글 - https://www.javacodegeeks.com/2012/08/observer-pattern-with-spring-events.html)Observer Pattern을 사용할 때를 떠올리면 됩니다. 이.. Spring - IoC 컨테이너의 기능 - 3 (MessageSource 란?) IoC컨테이너의 기능 MessageSource IoC컨테이너의 기능 MessageSource에 대해서 알아보려고 합니다. MessageSource는 국제화(i18n)기능을 제공하는 인터페이스 입니다. 즉, 하나의 메시지에 대해 다국어로 번역을 해주는 기능을 제공하는 것입니다. 이전 Environment에 대해 포스팅할 때 보았던 그림입니다. 바로 IoC컨테이너의 기능들을 구현하고 있는 ApplicationContext Interface입니다. 자세히 보면 ApplicationContext Interface가 상속받고 있는 여러 Interface 중 MessageSource가 보입니다. 이번 시간에는 저 MessageSource Interface에 대해 공부할 것입니다. 바로 예제를 통해 알아보도록 하겠습.. 이전 1 2 3 다음