Devlopment/Java

    Java 모델 매핑

    Java 모델 매핑

    개발을 하면서 모델간 매핑을 많이 한다. DTO, VO, Entity별로도 하고 DTO간 DTO 변환에도 사용한다. 개발자마다 각각 다양한 방식으로 이 부분에 대해 개발을 하는데 문제는 팀 내에서는 동일한 방식을 사용해야 한다. 팀 생산성상 중요하고, 코드리뷰에서 불필요하게 지적하는 시간을 줄일 수 있다. 중요한 점은 팀 내에서 협의하여 공통된 방식에 대해서 합의가 되어야 한다. 정해진 답은 없고, 프로젝트의 성격에 따라 다르겠지만 어느 정도 공통된 점들은 있다. Model Object 시작하기에 앞서 모델 객체애 대해서 다시 살펴보면 DTO, VO, Entity, Domain Model로 나누어 볼 수 있다. DTO Data transfer object 목적 : 데이터의 전달 데이터의 전달을 위한 생성..

    static final Logger에 대한 고촬

    코드리뷰를 하다보면 늘 반복적으로 나오는 내용이 있다. 기능상 문제가 되는 것은 아니지만 걸고 넘어갈만한 내용인데 매번 설명하기가 힘들어서 정리를 해본다. 오늘 코드리뷰를 하면서 나온 내용중에 하나가 아래와 같은 선언이다. private static final Logger LOGGER = LoggerFactory.getLogger(JavaClassName.class); 일단 LOGGER라는 네이밍이 걸렸지만 그 외에도 리뷰할만한 말이 있는데 설명하자니 이 간단한 한줄이 길어지게 되었다. 참고 소스 [1] - DefaultRedirectStrategy.java public class DefaultRedirectStrategy implements RedirectStrategy { protected final..

    MessageFormat의 숫자 대신 문자열 키값을 이용해서 값을 넣고 싶을 때

    java에서 기본으로 제공해주는 MessageFormat을 이용하면 {0}, {1}, {2} 이런 값에 대해 변수를 대입해줄 수 있지만, 문제는 숫자로만 가능한다는 점이다.숫자가 아닌 특정 템플릿 형태로 값을 주입하고 싶다면 common lang에서 제공해주는 StrSubstitutor을 이용하면 된다. 기본값은 "${name}"과 같은 형태이다. prefix가 "${"이고 suffix가 "}"이다.이 외에 다른 형태로 값을 넣고 싶으면 메서드 호출시에 prefix와 suffix를 넣어주면 원하는 형태로 사용이 가능하다. Test.javaimport java.util.HashMap; import java.util.Map; import org.apache.commons.lang.text.StrSubstit..

    Jackson, ObjectMapper 알지 못하는 프로퍼티도 허용하기

    Jackson에서 알지 못하는 프로퍼티가 있다면 파싱할 때 에러가 발생한다.이 때, 이런 프로퍼티가 추가되어도 에러가 나지 않게 막는 설정은 다음과 같다. test.xml FAIL_ON_UNKNOWN_PROPERTIES false Test.javaobjectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

    Clean Code - Null 리턴

    클린 코드에 null을 리턴하지 말라는 얘기가 있다.동감이다. null만 검사하다가 코드는 지저분하게 끝나고 만다. Collections 클래스에 있는 비어있는 객체를 활용한다. list, map, set 종류별로 다 있다.다만 static final이기 때문에 리턴받은 후에 추가를 하려고 하면 에러가 나기 때문에 쓰임새에 유의해야 한다. java.util.Collectionsstatic Enumeration emptyEnumeration()static IteratoremptyIterator()static ListemptyList()static ListIteratoremptyListIterator()static MapemptyMap()static SetemptySet() String 리턴의 경우 null..

    [Gradle] Build 오류 - Could not fetch model of type 'EclipseProject' using Gradle distribution

    Could not fetch model of type 'EclipseProject' using Gradle distribution Could not fetch model of type 'EclipseProject' using Gradle distribution " http://services.gradle.org/distributions/gradle-1.10-bin.zip" 나는 현재 신규 프로젝트를 Gradle로 빌드하고 있다.이클립스는 STS를 사용중인데, 다른 프로젝트를 임포트하고 신규 프로젝트를 생성하는 과정에서 JBoss가 필요하여 마켓에서 JBoss 플러그인을 설치하였다. 그런데 이전 프로젝트의 Gradle 빌드를 실행하려고 하니 위와 같은 에러가 발생하였다. 자세한 에러도 안 나오고, 네이버는..

    Java JAR, WAR파일에 버전 심고 확인하기

    배포파일에 대하여 버전을 확인할 수 있게 해달라는 요청이 있었다.파일명 뒤에 버전 붙이는 시덥잖은 방법으로는 한계가 있다.하지만 java의 배포파일에 버전을 넣는 방법은 없다. 내가 모르는 것인가?그리하여 JAR나 WAR에 공통적으로 들어가는 MANIFEST.MF 파일에 버전을 넣기로 했다. 해당 프로젝트는 Ant로 빌드하기 때문에 ant에 설정값을 추가했다. JAR나 WAR나 마찬가지이다. 그리고 저 파일을 확인할 수 있게 하기 위하여 bat파일과 sh파일을 만들었다. check_version.bat@echo offif "%1" == "" goto HELPjar xf %1 META-INF/MANIFEST.MFTYPE META-INF\MANIFEST.MFDEL META-INF\MANIFEST.MFRMDI..

    Java Network Framework, Netty

    혹시 Java로 TCP서버를 구축하고 계신가요?JAVA NIO를 공부하면서 서버 설계에 고민하고 계신가요? 서버 코어 설계 및 개발에 투자할 많은 시간 있다면? 그리고 안정성을 높이고 성능을 높이 끌어낼 자신과 시간이 있다면 직접 개발하세요. 하지만 그렇지 않다면 검증된 Java Network Framework인 Netty나 MINA를 사용해보세요. 이렇게 쓰니 제가 홍보하는 사람 같군요.하지만 저의 경험입니다. 서버 코어 부분을 설계하고 개발하다보면 프로젝트에서 너무 많은 시간을 할애하게 되어버립니다. 그 후에 안정성이나 성능에 대해서도 고민이 되고 제가 나가면서 다른 사람에게 인수인계 할 때의 유지보수도 문제가 되어 버립니다. 그런 면에서 Netty나 MINA를 추천합니다.사실 저도 어떻게 더 좋은지..

    JBoss 설치 및 연동

    1. JBoss 설치다양한 WAS중에서 나는 JBoss를 좋아한다. 회사에서는 주로 5버전을 쓰고 있었는데 최신 버전인 7 버전을 써보았다. 제일 좋은 점은 WAS 구동속도가 엄청나게 향상되었다. Download URL : http://www.jboss.org/projects * Admin 계정 생성jboss-as-7.1.1.Final\bin>add-user.bat * Server 시작jboss-as-7.1.1.Final\bin>standalone.bat$JBOSS_HOME/bin/standalone.sh 2. JBoss 환경변수 설정linux) export JBOSS_HOME=/home/atin84/work/jboss-as-7.1.1.Finalwin) 환경변수 JBOSS_HOME 추가 3. JBoss ..

    Mavn 및 플러그인 설치

    Maven & JBoss 개발 환경 구축 1. Maven 설치 2. Eclipse Maven Plug-in 설치 3. JBoss 설치 4. JBoss Eclipse Plug-in 설치 5. 1. Maven 다운로드URL : http://maven.apache.org/download.cgi환경변수 설정MAVEN_HOME=C:\maven\apache-maven-3.0.3 (자신이 설치한 위치로)path=%MAVEN_HOME%\bin 2. 이클립스 Maven 플러그인이클립스 상단메뉴의 Help>Install New Softwares 2.1. m2ehttp://m2eclipse.sonatype.org/sites/m2e 2.2. m2eclipse Extrashttp://m2eclipse.sonatype.org/s..