String.intern()은 뭘 하는거지?

String.intern에 설명에 앞서 다음 퀴즈를 한번 보자.   전제조건) String string = “test”; 전제조건) String test = “test”; Q1) test == “test”  ? Q2) test == new String(“test”) ? 위 문제의 답(java 1.6+에서)은 각각 true, false 이다.   왜 그럴까? 위 문제의 답을 알기 위해서는 intern이 뭘 하는지에 대해서 알아야 한다. 사실 위와 같은 답이 […]

Play framework에서 CRUD class가 보이지 않을 경우

http://www.playframework.org/documentation/1.2.4/crud   이클립스 기반으로 위의 튜토리얼을 따라하다 보면 CRUD class 가 보이지 않는 경우가 있다. 이 건, 이클립스에서 사용하는 내부 캐쉬 문제라고 한다. 이 경우에는 다음과 같은 순서로 해결 가능하다.   1. 이클립스 상에서 해당 프로젝트를 삭제(컨텐츠까지 지우면 안됨). 2. play eclipsify app-name 3. 이클립스에서 다시 import   이거 몰라서 한참 고생했네~

Spring-Data-JPA 사용하기

참고: http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html/ User라는 도메인 관련해서 RDB에 CRUD를 작성하는 걸 목표로 한다. 1. Domain 정의

@Entity: 해당 도메인 객체를 엔티티로 사용한다는 것을 알려준다. @Id: 엔티티의 Id 를 정의해준다. Id는 반드시 있어야 한다. @GeneratedValue: Id 값의 생성 방법을 정의한다. GenerationType.AUTO는 자동생성을 의미한다. Repository 정의

CrudRepository: Repository를 확장한 interface로 기본적인 CRUD를 정의해 놓은 인터페이스. 여기까지 만들어 놓았으면 […]

JibxMarshallerTests causes build failure on Windows

스프링이 gradle로 빌드 툴을 변경했다는 소식을 듣고 소스를 내려받고 빌드를 시도했다. 몇가지 테스트에서 에러가 났다. 1. 윈도우 7의 경우 콘솔창을 열 경우에 관리자 권한으로 실행해라. 그렇지 않으면 권한 문제로 테스트에 실패한다. 2.  JibxMarshallerTests 실패할 경우 ${basedir}/src/test/resources/org/springframework/oxm/jibx/binding.xml 파일을 열고 <binding> 엘리먼트에 name 속성을 추가해주면 된다. <binding name=”binding”> 참고  

spring-test-mvc 이용시 NoSuchMethodException 해결 방안

스프링 mvc 를 쉽게 테스트 가능하게 해주는 spring-test-mvc 라는 프로젝트가 나왔다. 이것을 이용하면 보다 상세하게 테스트를 할 수 있다. 예로 @RequestMapping 이라든지, 결과 페이지의 contents의 특정 값 또는 헤더 정보까지 확인이 가능하다. spring-test-mvc의 자세한 설명은 생략한다. 여튼 이 프로젝트를 이용해서 테스트를 하려 하는데, 자꾸 다음 에러가 발생했다. [java]java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Description;)V[/java] 이것이 뭔 소리지? 한 2시간 정도 […]

XStream을 이용한 언마샬링 Java 모델 생성 방법

내가 일하는 곳에서는 데이터를 제공해주는 시스템이 노후화되어 있는 부분이 많다. 그래서 간단한 데이터도 대부분 XML형태로 되어 있고 well-formed 가 아닌 곳이 많다. 난 XStremam을 XML을 통해 받는 데이터를 Java 오브젝트로 변환하는데 사용한다. 이유는 생산성이 빠르기 때문이다. 요새는 Jaxb 2.x 에서도 annotation 기반으로 설정이 가능해서 유사하다고는 하는데, 난 아직 XStream만 써봤다. 이제 간단히 사용하는 방법이다. Java […]

문자열을 거꾸로(reverse) 뽑아내기

문자열 조작에 대한 여러가지 요구사항이 있습니다. 그리고 이를 풀어내는 다양한 솔루션이 존재하구요. 이 범주에 속하는 것중에 하나가 문자열을 거꾸로 변환하는 질문인데요. 이 작업을 수행하기 위해서는 문자열을 배열로 변경하고 그 인덱스의 끝을 구해서 처음까지 리턴하는 방식으로 처리할 수 있습니다. 이 글에서는 이 방법이 아니라 JDK에서 제공하는 방법을 이용하는 솔루션을 소개합니다. 간단합니다. StringBuilder의 reverse()를 이용합니다. [java]<span class="Apple-style-span" […]

Velocity 에서 for loop 사용하기

Java 에서 반복작업은 for loop을 사용해서 많이 했다. Java 5 전에는 다음과 같이 for (int i=0; i++; i<n) {} 이런 식으로 사용했었다. 그리고 java 5에는 다음과 같은 문법이 추가되면서 좀 더 편해졌다. for (String str : String[] strArray) {} 위 문법의 장점은 인덱스 없이 주어진 일련의 데이터에 대해서 동일한 작업을 할 수 있다는 것이다. 각설하고 […]

JRebel

웹 애플리케이션 개발을 하는 나는 자바 소스나 프로퍼티성 파일이 변경이 될 경우에는 WAS로 사용하는 톰캣 서버를 리스타트 해야했다. 혹은 reloadable=”true”로 설정을 해서 톰캣이 변경사항을 인지하고 서버를 재시작하는 방법을 사용하곤 했다. 그런데, JRebel은 서버 재시작의 번거로움 없이 변경된 리소스를 인지하고 즉시 클래스 로더에 변경 정보를 반영해서 사용가능하게 해준다. 물론 변경하자마자 바로는 아니지만, 대에충 1~2초 정도면 반영이 […]

tomcat에서 GET 형태의 파리미터 인코딩 설정

톰캣 버전: 6.0 톰캣은 GET 형식의 파라미터를 인코딩하는 방법을 설정에서 제어할 수 있습니다. 가장 많이 사용되는것이 Connector 엘리먼트에 URIEncoding 값 입니다. <Connector port=”80″ protocol=”HTTP/1.1″ maxThreads=”150″ connectionTimeout=”20000″ redirectPort=”8443″ URIEncoding=”UTF-8″ /> 위와 같이 설정되어 있으면 모든 GET 형태의 파라미터를 tomcat안의 서블릿에 던져줄 때 자동으로 URIEncoding에 설정한 케릭터셋으로 URLDecoding을 합니다. 그리고 Connector 엘리먼트에 useBodyEncodingForURI 값이 있습니다. 위와 같이 […]