Spring Framework/Spring Core: 70개의 글

참조문서 http://www.ehcache.org/documentation/ https://blog.outsider.ne.kr/1094 https://www.mkyong.com/spring/spring-caching-and-ehcache-example/ 캐시 엔진 중에 유명한 것들은 memcached, redis 등이 있다. ehcache는 간단한게 쓸 수 있는 캐시라이브러리이며, spring에서 어노테이션으로도 쉽게 쓸 수 있다. 캐시를 적용하기 최적인 경우는 20%의 데이터가 전체 조회 건수의 80%를 차지할 경우(80:20 법칙?) 캐시를 사용함으로써 성능을 대폭 향상 가능하다. 1. EHCache란? 캐시 엔진 중의 하나이다. 주요 특징으로는 아래와 같다. 경량의 빠른 캐시 엔진 확장성 : 메모리..

스프링프레임워크로 카카오봇 만들기 참조문서: https://github.com/plusfriend/auto_reply 0. 들어가며 삼육대 카카오챗봇을 구현할 일이 생겼다. 구글링을 열심히 했지만 노드, 장고, php의 챗봇 개발이야기밖에 없었다.(심지어 스프링 부트도 못찾은ㅋㅋ) 다른 언어를 쓸 수도 있지만, 공부나 할겸 api문서만 보고 만들기로 결심했다.. 역시 삽질을 많이했고, 다른 개발자분들의 삽질시간 단축을 위해 소스를 공유한다. 그리고 ui없이 백엔드만으로 간단하게 개발할 수 있으며 재밌기때문에 많은 분들이 한번 자신의 서비스를 개발해보셨으면 한다. 해당 문서에서는 간단하게만 설명하며, 전체 소스는 github에 있다. GITHUB: https://github.com/sjh836/Spring..
오늘 부터 시간이 나는대로 스프링 프레임워크에서 처리해주는 기능들이 어떻게 동작하는지 소스 리뷰를 하기 시작했다.@RequestBody와 @ResponseBody가 어떻게 동작하는지 궁금해서 spring-web 프로젝트를 조금 살펴보다가 HandlerMethodArgumentResolverComposite 클래스라는 놈을 만나게되었는데, Composite라는 패턴을 사용했다. 사실 Composite 패턴이라는걸 예전에 책을 통해 한번 본거 같은 기억이 나지만 잘 와닿지 않았는데 스프링 소스를 보니 이해가 잘된다. 먼저 Composite 패턴에 대해서 설명은 생략하겠다. 참고 Diagram HandlerMethodArgumentResolver는 Request 요청에 대한 파라미터 데이터에 대해 컨트롤 할 ..
1. HATEOAS(Hypermedia As The Engine Of Application State) HATEOAS는 RESTful API를 사용하는 클라이언트가 전적으로 서버에 의해 동적으로 상호작용을 할 수 있다. 쉽게 말하면 클라이언트가 서버에 요청시 서버는 요청에 의존되는 URI를 Response에 포함시켜 반환한다. 예를들면 사용자정보를 입력(POST)하는 요청 후 사용자를 조회(GET), 수정(PUT), 삭제(DELETE)할 수 있는 URI를 동적으로 알려주게 되는 것이다. 이렇게 동적으로 모든 요청에 의존되는 URI 정보를 보여준다면 아래와 같은 장점이 있을 것이다.요청 URI정보가 변경되어도 클라이언트에서 동적으로 생성된 URI를 사용한다면, 클라이언트 입장에서는 URI 수정에 따른 코드..
1. 개발환경Spring 4.0.3MavenJavaConfig2. pom.xml?123456789101112 org.springframework spring-support 2.0.8 javax.mail mail 1.4.7 3. MailSender 설정(javaConfig)config.xml?12345678910 smtp.gmail.com 25 UTF-8 이메일 주소 이메일 비밀번호 truejavaConfig?123456789101112131415161718192021222324252627import com.woniper.service.MailService;import org.springframework.beans.factory.annotation.Autowired;import org.springframe..
XML 스키마 기반의 POJO 클래스를 이용한 AOP 구현 1. XML 스키마 기반 AOP XML 스키마를 이용해서 AOP를 구현하는 과정은 다음과 같다.1 관련 .jar파일을 클래스패스에 추가한다.2 공통 기능을 제공하는 Advice 클래스를 구현한다.3 XML 설정 파일에서 를 이용해서 Aspect를 설정한다. Advice를 이떤 Pointcut에 적용할지를 지정하게 된다. (1) 공통 기능을 제공한 Advice 클래스를 작성ProfilingAdvice.javaimport org.aspectj.lang.ProceedingJoinPoint; public class ProfilingAdvice {// ProfilingAdvice 클래스는 Around Advice를 구현한 클래스이다.public Objec..
AOP 개요 Aspect Oriented Programming, 줄여서 AOP는 문제를 바라보는 관점을 기준으로 프로그래밍하는 기법을 말한다. AOP는 문제를 해결하기 위한 핵심 관심 사항과 전제에 적용되는 공통 관심 사항을 기준으로 프로그래밍 함으로써 공통 모듈을 여러 코드에 쉽게 적용할 수 있도록 도와 준다. AOP를 구현하는 다양한 방법이 존재하지만, 기본적인 개념은 공통 관심 사항을 구현한 코드를 핵심 로직을 구현한 코드 안에 삽입한다는 것이다. AOP 기법에서는 핵심 로직을 구현한 코드에서 공통 기능을 직접적으로 호출하지 않는다. 핵심 로직을 구현한 코드를 컴파일 하거나, 컴파일 된 클래스를 로딩하거나, 또는 로딩한 클래스의 객체를 생성할 때 AOP가 적용되어 핵심 로직 구현 코드 안에 공통 기..
Locale 처리 스프링 제공하는 커스텀 태그는 웹 요청과 관련된 언어 정보를 이용해서 알맞은 언어의 메시지를 출력한다.웹 브라우저의 언어 설정을 한국어(ko_kr)로 했을 때와 영어(en_us)로 했을 때 커스텀 태그가 언어에 따라 알맞은 메시지를 출력해 주는 결과 화면을 보여주고 있다. 실제로, 스프링 MVC는 LocaleResolver를 이용해서 웹 요청과 관련된 Locale을 추출하고, 이 Locale 객체를 이용해서 알맞은 언어의 메시지를 선택하게 된다.본 절에서는 스프링이 제공하는 LocaleResolver를 사용해서 Locale을 변경하는 방법에 대해서 살펴보도록 하겠다. 1. LocaleResolver 인터페이스org,springframework.web.serlvet.LocaleResolv..
ViewResolver 설정 뷰 영역 구현컨트롤러는 최종적으로 결과를 출력할 뷰와 뷰에 전달할 객체를 담고 있는 ModelAndView 객체를 리턴한다.DispatherServlet은 ViewResolver를 사용하여 결과를 출력할 View 객체를 구하고, 구한 View 객체를 이용하여 내용을 생성한다. 1. 컨트롤러 구현 및 설정 추가컨트롤러를 구현하려면 먼저 @Contoller 어노테이션을 클래스에 적용한다. 그리고, @RequestMapping 어노테이션을 이용해서 클라이언트의 요청을 처리할 메서드를 지정한다.package madvirus.spring.chap06.controller;import java.util.Calendar;import org.springframework.stereotype.C..
@RequestBody 어노테이션과 @ReponseBody 어노테이션의 사용 웹 서비스와 REST 방식이 시스템을 구성하는 주요 요소로 자리 잡으면서 웹 시스템간에 XML이나 JSON 등의 형식으로 데이터를 주고 받는 경우가 증가하고 있다.이에 따라 스프링 MVC도 클라이언트에서 전송한 XML 데이터나 JSON 또는 기타 데이터를 컨트롤러에서 DOM 객체나 자바 객체로 변환해서 받을 수있는 기능(수신)을 제공하고 있으며,비슷하게 자바 객체를 XML이나 JSON 또는 기타 형식으로 변환해서 전송할 수 있는 기능(송신)을 제공하고 있다. @RequestBody 어노테이션과 @ResponseBody 어노테이션은 각각 HTTP 요청 몸체를 자바 객체로 변환하고 자바 객체를 HTTP 응답 몸체로 변환하는 데 사용..