프로그래밍 201

Google Guava

프로젝트를 하다보면 Collection ( List , Map ), String 을 정말 많이 다룬다. Map에서 특정 키로 get해서 꺼내쓰거나 String 의 값을 equals 로 비교하여 특정조건문을 수행할 때, 개발자가 아무리 꼼꼼하게 테스트하더라도 개발자도 사람이라 비교하려는, 혹은 사용하려는 값이 null인 경우는 거의 무조건 발생한다. 그렇기 때문에 NullPointerException 정말 자주 만나게 된다. 디버깅해보면 금방 알아내긴 하지만 경우에 따라선 찾기 힘든경우도 있고, 때로는 정말 찾기 힘든 끔찍한 버그를 만들기도 한다. FastFail 이라는 말이 있다. 문제가 있을 땐 최대한 빨리 실패시키는 것이 좋다. 제일 좋은것은 컴파일 시점에 알아내는것이고. 요즘은 프로젝트가 거의 Sp..

엑셀의 내용을 도메인에 셋팅하는 유틸리티 클래스

엑셀의 내용을 도메인클래스에 셋팅하는 유틸리티 클래스를 만들어보았습니다. 우선 메소드는 아래와 같습니다. /** * @param excelFile : 읽어들일 엑셀파일 * @param clazz : 읽어들인 엑셀파일의 내용을 셋팅할 Domain 클래스 * @return 읽어들인 엑셀파일의 내용이 셋팅된 Domain 클래스 리스트 */public static List excelToDomain(File excelFile, Class clazz) 만들면서 발생했던 이슈는, 처음에는 Domain 클래스의 setter 메소드를 엑셀의 셀의 순서대로 호출하는 것이였습니다. 이렇게 엑셀 데이터를 순차적으로 setter 메소드에 Reflection을 사용하여 셋팅하려 했습니다. 그런데 이 방법은 너무 위험해보였습니다...

Enabling Cross Origin Requests for a RESTful Web Service

package hello; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Component; @Component public class SimpleCORSFilter implem..

명사형을 이용한 엔티티 타입 도출

데이터베이스 설계와 구축 명사형을 이용하여 엔티티 타입을 도출. 업무 기술서를 이용한 엔티티타입 선정 예 업무기술서:(인터넷 경매를 하는 IAUCTIONCO라는 회사는 경매할 물품에 대한 내용을 온라인으로 접수받고,각 물품이 팔릴수 있는 날짜를 정하여(이 날짜를 경매 공고일이라고 함) 인터넷에 경매를 공고한다.경매 공고일에는 역시 온라인을 통해 입찰인이 입찰된 물품을 매수 신청하고 매수 신청한 입찰대금을은행계좌나 카드 또는 직접 IAUCTIONCO에 납부하지 않으면 낙찰은 자동으로 취소되고차순위 금액을 신청한 매수 신청인에게 물품이 낙찰된다. 낙찰인은 1주일 이내에 대금을 납부하면경매가 성사되었다고 하고, 매수 신청인에게 낙찰대금을 입금하여 경매 절차가 완료된다.경매가성사되는 경우 물품가격의 2%를 IA..

Spring Boot - Simplifying Spring for Everyone

SpringSource 에서 Spring Boot 라는 신규 프로젝트가 릴리즈 되었다. 이게 뭔가.. 하고 살펴 보니 기존에 스프링 프레임웍 으로 프로젝트를 셋팅 하려면 프로젝트 환경설정용 xml 이나 Java 파일을 작성하고, WAS 를 설치하고 WEB.XML 을 설정하고 , 컨트롤러-서비스-DAO-DOMAIN 을 만들어서 기본 셋팅을 했다. (물론 TEMPLATE PROJECT로 해도된다) 헌데, 이 Spring Boot 프로젝트는 위 과정들을 죄다 생략 해준다.. Spring Boot SLI 라는 커맨드라인용 툴을 다운 받으면 매우 간편하게 일련의 작업들을 자동화할 수 있다. 각설하고, 간단한 예제를 보자.. 스프링 블로그에 Spring-Boot 소식이 올라왔다. 자세한 내용은 링크를 참조하여 보시..

RequestMappingHandlerMapping 관련

약 한달전에 RequestMappingHandlerMapping에 문제가 있어보인다는 포스팅을 했었고, http://javaiyagi.tistory.com/357jira에 등록하였다. https://jira.springsource.org/browse/SPR-10574 그리고 KSUG 에도 올렸다.https://groups.google.com/forum/#!topic/ksug/uSkVWfkvwkI 어제, 오늘 JIRA에 Phil과 Rossen이 답글을 달아주었다.. Phil Webb added a comment - 26/Jun/13 12:23 PMIt used to be the case that @Controller classes could be handled by the HandlerAdapter, wi..

Spring 3.2.3 DeferredResult 를 이용한 소규모 sns 개발

Spring Blog 에 올라온 DeferredResult 를 이용한 채팅 샘플 소스를 보고, sns도 순식간에 만들수 있겠다는 생각을 하여 만들어보았습니다. 우선 개발한 sns url 은 http://lrvsns.cfapps.io 입니다. cloudfoundry 에 기본적으로 사용되는 톰캣6이 Async 를 지원하지 않아서, cloudfoundry 블로그를 뒤져보니, 톰캣7을 통째로 push 하는 방법이 있더군요 .. 사용 기술은 Spring Security 3.2.0.M1 Spring Framework 3.2.3 JQuery MySql 입니다. Spring Security 관련 이슈가 좀 있었습니다. SECURITY 3.1.4.RELEASE 버전을 쓰니, DeferredResult 사용 도중 자꾸 s..

추상화, DI

스프링의 3대 핵심 기술 중 "추상화" 라는 것이 있다.. 갑자기 누군가 나에게 추상화에 대해 설명해 보라.. 라고 질문을 한다면 뭐라고 답을 해야할까? 라고 생각을 해보았다. 생각을 해보니, 추상화라는 것은 결국 DI 일 뿐이였다. 예를 하나 들어볼까.. 뭐가 좋을까.. OXM 추상화 를 예로 들어보자 .. 스프링은 OXM 추상화를 제공한다. oxm 기술에는 비슷비슷한 여러가지가 있는데, Castor , JaxB, Xstream 등이 있다. 스프링에선 위 기술들에 대한 추상화 인터페이스로 Unmarshaller 를 제공한다. 그리고 각 기술에 대한 구현체들도 제공한다. 당연히 추상화 인터페이스인 Unmarshaller 를 구현하고 있다. 하여, 개발자는 어떤 OXM 기술을 쓰던 Unmarshaller ..