본문 바로가기

spring

AnnotationMethodHandlerExceptionResolver 컨트롤러에서 발생한 예외 타입에 따라 에러페이지를 등록할 수 있고, 이 작업은HandlerExceptionResolver(이하 '인터페이스') 인터페이스 구현을 통해 이루어진다. 인터페이스의 주요 구현 클래스는 다음과 같다 1. AnnotationMethodHandlerExceptionResolver- @ExceptionHandler 적용 메서드를 이용해서 예외를 처리한다. 2. DefaultHandlerExceptionResolver- NoSuchRequestHandlingMethodException 과 같이 스프링 관련 예외 타입을 처리한다. 3. SimpleMappingExceptionResolver- 예외 타입 별로 뷰 이름을 지정할 때 사용한다. ;스프링 설정 파일에 HandlerExceptio.. 더보기
Spring3.0 AnnotationMethodHandlerExceptionResolver 와 SimpleMappingExceptionResolver 두가지 사용시 주의점 스프링 3.0 사용시 SimpleMappingExceptionResolver 를 환경 설정으로 사용한다면 기존의 default 설정인 AnnotationMethodHandlerExceptionResolver 이 작동되지 않는데 이때에는 order 속성을 두어 셋팅한다. 출처 : http://xero0212.tistory.com/32 더보기
Spring AOP - @Aspect 애노테이션 (<aop:aspectj-autoproxy proxy-target-class="true" />) AOP 개념애니매이션 기능을 사용해서, 각각의 (횡단)로직들이 여러 클래스에 분산되어 들어가는 모습을 보여주면 더 멋질 것 같습니다.Spring 2.0에서는 AspectJ에서 제공되는 애노테이션을 이용해 POJO로 Aspect를 작성 할 수 있습니다.AspectJ를 전략적으로 이용하기 때문에 Spring2.0 에서의 AOP도 여전히 Proxy방식으로 작동 됩니다.출처 : http://whiteship.tistory.com/1958자금 이체를 하는 프로그램을 작성한다고 생각해보자. 출금계좌와 입금계좌, 그리고 이체금액을 입력받아 SQL 문장 또는 함수 한 번 돌리는 것으로 끝나는가? 절대 아니다. 먼저 해킹을 방지하기 위해 사용자가  적절한 보안 프로그램을 설치했는지 점검하는 코드도 있어야 하고, 사용자가.. 더보기
<context:component-scan />의 사용법 1. 어노테이션을 이용한 자동 스캔@Component("homeController")public class HomeController {.......}@Componenet 어노테이션을 클래스에 적용 했다면,  태그를 이용해서 스프링이 클래스를 검색할 패키지를 지정하면 된다.=> @Component 어노테이션이 적용된 클래스를 검색하여 빈으로 등록하게 된다.#ApplicationContext.xml xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schem.. 더보기
어노테이션 기반 설정 * 필요한 환경 : jdk5.0 이상 @Required 목적 : 필수 프로퍼티를 지정 설정 위치 : setter메소드 추가설정 : RequiredAnnotationBeanPostProcessor 클래스를 빈으로 등록시켜줘야 한다. 해당 설정 대신에 태그를 사용해도 된다. @Autowired 목적 : 의존관계를 자동설정할 때 사용하며 타입을 이용하여 의존하는 객체를 삽입해 준다. 그러므로 해당 타입의 빈객체가 존재하지 않거나 또는 2개 이상 존재할 경우 스프링은 예외를 발생시키게 된다. 설정 위치 : 생성자, 필드, 메소드(굳이 setter메소드가 아니여도 된다) 추가설정 : AutowiredAnnotationBeanPostProcessor 클래스를 빈으로 등록시켜줘야 한다. 해당 설정 대신에 태그를 사용.. 더보기
XStream //xstream.java public class xstream { public static void main(String[] args) { XStream xstream = new XStream(new DomDriver("euc-kr")); xstream.alias("list", List.class); xstream.processAnnotations(List.class); xstream.processAnnotations(N.class); try{ InputStream reader = new FileInputStream("get_data.xml"); List list = (List)xstream.fromXML(reader); System.out.println("ky :" + list.Ka); System... 더보기
XStream XML http://xstream.codehaus.org/ 오래전부터 XML을 변환하는 데 있어서 XStream을 많이 사용했을 겁니다. 이것을 사용하면 아주 편하게 XML을 제어롤 하게 됩니다.(object를 xml로 or xml을 object로) 그래서 SOAP 인터페이스나 다양한 OPEN API나 멀티미디어 디바이스와의 연동 등에 많이 사용하곤 합니다. 아래의 샘플을 올려놓을테니 한번 실행해 보시고 사용법을 익힌다음 자기의 것으로 만들어 개발에 생산성을 높이는데 일조를 하시면 되겠죠. ^^ 1. IXmlRule.java package com.mimul.xstream; public interface IXmlRule { public String toXML(); } 2. BaseRule.java package .. 더보기
@Controller, @RequestMapping - Annotation in Spring(어노테이션을 사용한 컨트롤러 구현) 스프링 2.5 부터는 Controller 인터페이스를 구현하지 않은 클래스도 어노테이션을 사용하여 컨트롤러로 사용할 수 있게 되었다. 이를 위해 스프링은 @Controller, @RequestMapping 등 컨트롤러를 구현하는데 필요한 어노테이션을 제공하고 있다. 어노테이션을 이용하여 컨트롤러를 구현할 때는 요청 URL 매핑을 @RequestMapping 어노테이션을 이용하여 설정한다. @RequestMapping 어노테이션을 처리하기 위해서 DefaultAnnotationHandlerMapping 을 HandlerMapping 으로 등록해 주어야 한다. 그런데 DispatcherServlet 이 사용하는 설정 파일에 별도의 HandlerMapping 명시를 하지 않으면, DispatcherServle.. 더보기
@RequestMapping 어노테이션을 이용한 요청 매핑 설정 @RequestMapping 어노테이션은 컨트롤러가 처리할 요청URL을 명시하는데 사용되며, 클래스나 메서드에 적용될 수 있다. 첫째로, @RequestMapping 어노테이션을 클래스에는 적용하지 않고 메서드에만 적용할 경우에는 각각의 메서드가 처리할 요청 URL을 명시하게 된다. import! org.springframework.stereotype.Controller; import! org.springframework.ui.ModelMap; import! org.springframework.web.bind.annotation.RequestMapping; import! org.springframework.web.bind.annotation.ReqeustParam; @Controller pubilc cl.. 더보기
URI Template REST 아키텍처에서 가장 기본적인 개념은 바로 모든 리소스에 ID를 부여한다는 것이다. 웹 기반의 어플리케이션에서 리소스는 어플리케이션에서 제공하는 서비스가 될 것이고, 서버에 존재하는 수많은 서비스들을 식별하기 위한 ID는 URI가 될 것이므로 RESTful URI는 다음과 같은 사항들을 고려한 설계가 필요하다. URI path가 계층 구조를 이루도록 설계 상위 path는 하위 path의 collection을 의미하도록 설계 예를 들면, '/movies/MV-00001'의 경우 'movies'와 movieId 값인 'MV-00001'은 계층 구조를 가지고, 상위의 'movies'는 하위 movieId의 collection을 의미하는 형태로 이루어진 RESTful URI이다. URI Template은 .. 더보기