본문 바로가기

Dev. Java

(76)
[예외처리] throw / throws , try-catch-finally 예외처리 출처 : http://pakt.tistory.com/ ( Error ): 화면에 잘못된 메시지를 출력하고, 실행을 멈추게 되는 프로그램 자체의 문제: Error class 에서 파생: 에러 관련 처리 코드가 정확치 않아도 컴파일 됨ex) OutOfMemoryError ..예외처리 ( Exception ): 프로그램의 흐름이 끊어지지 않게 하기 위해서 필요한 부분.: 오류가 생겼다고 해서 중간에 프로그램을 강제종료하지 않고, 정상적으로 마지막 부분까지 흘러가서 종료되게 하는 것.: 문제가 발생될 것을 미리 예측하여 프로그램 과정중에서 잡아내는 것: java.lang.package 의 Exception class 에서 파생 -> 모든 예외 클래스의 상위 클래스ex) IOException .. throws: ..
추상 클래스 뽀개기 추상 클래스는 이전 포스팅에서도 다룬 적이 있지만, 다시 정리된 내용이 있어 새로 올린다.먼저 추상 클래스의 특징을 살펴보면 다음과 같다. 이렇게 글로 된 설명만 보고 추상 클래스를 이해 하였다면, 당신은 현업 개발자이거나 프로그래밍 감이 정말 좋은 축에 속하는 사람일 것이다. 필자를 포함한 초보들은 이런 설명만 보고는 도무지 이해를 못한다. 동의하였다면 아래 그림을 살펴보자. 1. 추상 클래스 추상 클래스는 미완성 클래스이다. 객체가 가지는 특성을 추상화 했으나 구현하지 못한 것이다. 2. 자식 클래스 자식 클래스에 공통으로 포함된 move 메서드와 carry 메서드에서 볼 수 있듯이, 추상 메서드는 반드시 자식 클래스에서 오버라이딩하여 구현하여야 한다. 그렇지 않으면 자식도 추상 클래스가 된다. 3...
스프링 어노테이션 정리 @Autowired패키지: org.springframework.beans.factory.annotation버전: spring 2.5설정 위치: 생성자, 필드, 메서드(setter메서드가 아니여도 된다) 앞의존관계를 자동설정할 때 사용하며 타입을 이용하여 의존하는 객체를 삽입해 준다. 그러므로 해당 타입의 빈객체가 존재하지 않거나 또는 2개 이상 존재할 경우 스프링은 예외를 발생시키게 된다.options:required: Autowired 어노테이션을 적용한 프로퍼티 중 반드시 설정할 필요가 없는 경우에 false값을 주어 프로퍼티가 존재하지 않더라도 스프링이 예외를 발생하지 않도록 한다. 기본값은 TRUE. ex) @Autowired(required=false)사용하려면 클래스를 빈으로 등록시켜줘야 한다..
커스텀 ArgumentResolver 등록하기 개요스프링 사용시 컨트롤러에 들어오는 파라미터나 리턴타입을 나한테 맞게 가공해서 사용하고 싶을 때가 있다.. 기존에는 WebArgumentResolver를 구현해서 AnnotationMethodHandlerAdapter에 등록을 해야 했는데, 스프링 3.2버전 부터는 deprecated 된 상태다. 지금은 RequestMappingHandlerAdapter 클래스가 담당하는데, 이 클래스에서는 WebArgumentResolver가 HandlerMethodArgumentResolver로 바뀌었다.예제request 파라미터 수집을 Map 형태로 하는 클래스를 만들어서 등록해보자. 먼저 Spring Project로 생성한 뒤, 파라미터 수집하는 클래스를 생성하자. ParamCollector.javapackag..
DispatcherServlet란 도데체 무엇일까? [출처] http://springmvc.egloos.com/504151 스프링MVC는 DispatcherServlet 등장으로 정말 엄청나게 web.xml의 역할이 축소되었습니다. 예전같으면 서블릿을 URL로 활용하기 위해선 반드시 web.xml에 등록해야 했지만 이젠 DispatcherServlet이 해당 어플리케이션으로 들어오는 요청을 모두 핸들링해주니 말이죠. 물론 아직까지 web.xml의 역할은 중요합니다. 으로 DispatcherServlet을 등록해줘야 하는데다 이 객체의 URL 적용범위 또한 web.xml에다 설정해야 하구요. 향후 고급서비스를 위해 나 를 등록하는 역할 또한 web.xml의 기능으로 남아 있습니다. 대신 앞으로 web.xml에서 가장 주요하고 자주 쓰이는 기능인 매핑은 이제..
스프링 MVC 프로젝트 템플릿 구조
스프링이 도대체 뭐란 말인가? http://springmvc.egloos.com/487497 본 문서를 읽는 독자들에게 부탁하나 하노라면 토비의 스프링 3와 함께 읽어주길 바란다.많은 부분이 이 책에서 인용되었고 필자 또한 책을 읽고 이해가 가지 않는 부분에 대해 적어놓는 형태인지라책과 함께 블로그를 읽는다면 큰 도움이 될 것이라 생각되기 때문이다. 토비의 스프링은 다음과 같이 말한다. 스프링은 거대한 컨테이너임과 동시에 Ioc/DI를 기반으로 하고 있는 거룩한 존재이며 서비스 추상화를 통해 삼위일체로 분리되는 3단 변신로봇이라고 한다. 이럴수가! 뭔말하는지는 하나도 모르겠지만 일단 말만 들어도 엄청난데다 가격까지 공짜다. 게다가 이걸 쓰는 사람들마다 칭찬 또 칭찬 일색이니 궁금해서 참을 수가 없다. 근데 말이다…. 필자는 스프링의 ..
정확한 숫자 계산을 위한 BigDecimal 실수 연산의 경우 float , double 타입의 사용에 주의해야 한다. System.out.println(2.0 - 1.1); 를 해보면 그 이유를 알 수 있다. 이에 대한 결과는 0.9가 아니라 0.8999999999 결과가 출력 된다. 이는 컴퓨터가 숫자1.1을 double로 정확하게 표현 할 수 없어 근사치를 출력하기 때문이다. 이에 대한 해결책으로 정확한 소수 연산을 수행하는 BigDecimal타입이 있다. 단, 주의할 점은 항상 BigDecimal(double)이 아닌 BigDecimal(String) 생성자를 사용해 야 한다. 이유는 BigDecimal(double)을 사용하는 순간, double 자체가 정확하게 수를 표현 못하기 때문에 생성 자체부터 부정확한 값이 기억되기 때문이다. 예 ..