본문 바로가기

Java+/Example

(8)
LOGBack Configurator with JMX Introduce 요즘 logback 많이 쓸꺼다... "Reasons to prefer logback over log4j"에 보면 이제는 log4j 를 버리고 logback 을 써야하는지 이유를 영어로 설명 해놓았다. ㅅㅂ -_-;; 딴건 잘 모르것고 맘에 드는걸 보자면... - Automatic reloading of configuration files (설정 파일 자동으로 다시 로드)- Automatic removal of old log archives (이전 로그 아카이브 자동 삭제)- Automatic compression of archived log files (아카이브 로그 파일 자동 압축) 서버를 재시작 하지 않고 logback.xml 파일을 수정하면 바로 설정이 적용 된다고 한다. ㅎㅎ ..
현지어로 언어명 보여주기 Introduction 다국어를 지원하는 홈페이지에서 언어 선택하는 부분을 보면 대표하는 언어로 다국어명이 나오는 것을 볼 수 있다. 이거 따라해 보자 -_-;; Locale 에서 getDisplayCountry() 뽑아낼 때 인자로 현재 Locale 을 넣어주면 자신의 Locale 언어 그대로 나온다. for (Locale locale : Locale.getAvailableLocales()) { if (locale.getCountry().isEmpty() == false) { System.out.println("--"); System.out.println(locale.getCountry()); // 이거 System.out.println(locale.getDisplayCountry(locale)); }..
2014년 도로명 주소 사용에 따른 우편번호 준비 Intorduction - 도로명 주소는 2014년부터 생활(법정)주소로 전면 사용됩니다.- 도로명주소를 사용하지 않으면 은행, 카드, 보험 등 거래처의 우편물 수신에 불편함이 있을 수 있습니다. 이렇게 나와있다... Y2K 처럼 버그도 아니고, 그냥 체계가 바뀌는 거지만... 미리 준비하자. -_-/ 데이터 입력 http://www.juso.go.kr 정보제공 게시판 쪽에 가보면 현재 11월 기준의 도로명 주소 데이터가 올라와 있다. 매월 말에 데이터가 갱신 되는듯 하다... ㅅㅂ 4개의 게시글 첨부파일을 다 다운로드 받은 후 txt 파일이 나올때까지 전부 압축을 해제하자. 파일을 보면 알겠지면 4개의 테이블 구조로 되어있다. 이것을 대충 ERD로 짜보면 아래와 같다. 네이밍 ㅅㅂ -_-/ 이제 텍스트..
JSTL Custom Tag using Spring Beans Introduction JSTL 태그를 만들어 사용할 때에 스프링 빈을 가져다 쓰는 방법이다. Using Spring Beans 너무나도 간단하다. 일반적으로 TagSupport 클래스를 상속 받아서 구현 하면 되는데, 스프링 빈을 사용하고 싶으면 RequestContextAwareTag 클래스를 상속 받아서 구현하면 된다. 사용법은 아래와 같다. import org.springframework.web.context.WebApplicationContext; import org.springframework.web.servlet.tags.RequestContextAwareTag; public class XXXTag extends RequestContextAwareTag { @Override protected..
Spring Message Source from Database 스프링을 이용한 다국어 처리를 데이터베이스를 이용해 어떻게 할까 이것저것 고민하다가 구현해 봤습니다. 개발 환경 - Eclipse Indigo + Maven Integration (Sonatype, Inc.) - WebLogic 12c (Tomcat 7) 테이블은 아래와 같이 구성하였습니다. 특별한 것은 없고 여느 책에서나 나오는 스프링에서 MessageSource를 사용하여 다국어 메세지를 가져오는데 AbstractMessageSource 클래스를 상속 받아 따로 클래스를 만들어 봤습니다. (com.tistory.antop.framework.support.DatabaseMessageResource) 구동해 볼 수 있는 샘플을 만들어 봤습니다. 실제 메세지 리소스 부분만 구현하는 시간은 금방인데 하나의 ..
Infinite Routing DataSource 스프링을 이용하여 몇개의 데이터소스를 정해놓고 라우팅을 하는 경우 AbstractRoutingDataSource를 이용할 수 있었습니다. 하지만 경우에 따라 접속해야하는 데이터베이스가 무한대일 경우? 그래서 이것저것 생각해 봤는데 -_-.... 로그인시에 [고객 코드], [아이디], [비밀번호] 3가지를 입력 받습니다. [고객코드]로 고객을 찾은 후 고객의 정보로 디비 정보를 만든 후 ThreadLocal에 저장합니다. 그 후 로그인 처리를 합니다. 로그인 시에 데이터소스를 사용할 때 ThreadLocal에 있는 디비 정보(DbInfo 객체)로 데이터소스를 만들거나 캐쉬에서 가져오게 합니다. 로그인 때에 처음 그 데이터베이스에 접속을 하게 되니까 RoutingDataSource 부분에서 데이터소스를 처음..
Mybatis Type Handler 마이바티스를 이용하여 자바 객체와 데이터베이스 테이블을 매핑할 때 서로 완전히 다른 타입의 것들을 사용할 때가 있습니다. 그 예로 대표적인 예가 자바의 Boolean 과 데이터베이스의 플래그 문자입니다. 오라클 같은경우 boolean 타입이 없기 때문에 보통 CHAR(1) 잡고 Y/N 값을 많이 사용합니다. 다른 경우는 1 or 0 을 사용하여 참/거짓, 사용/미사용, 차단/허용 같은 on/off 플래그 값을 사용합니다. 값 자바 데이터베이스 boolean CHAR(1) INTEGER 참 / 사용 true Y 1 거짓 / 미사용 false N 0 org.apache.ibatis.type.TypeHandler 인터페이스를 이용해서 서로 다른 타입을 연결할 수 있습니다. package com.tistory...
Using AUTO_INCREMENT keys http://dev.mysql.com/tech-resources/articles/autoincrement-with-connectorj.html http://static.springsource.org/spring/docs/3.1.0.M1/spring-framework-reference/html/jdbc.html MySQL 에는 AUTO_INCREMENT(이하 AI)라는 것이 있습니다. 오라클 디비의 시퀀스와 같이 자동으로 값이 증가하게 됩니다. AI를 적용하려는 칼럼은 기본키K(Primary Key)여야 합니다. Before JDBC API 3.0 JDBC API 3.0 이전에서는 INSERT 이후에 "select last_insert_id()" 쿼리를 날려서 추가된 AI 값을 가져와야 합니다. Conne..