개발 127

프로젝트의 모든 URI 가져오기

URI Logger 관리 때문에, 프로젝트 내의 모든 URI를 가져와야 했다. @RequestMapping 어노테이션에 써놓았던 URI를 가져오려면....거기 있는 URI들을 매핑해서 관리하는 클래스가 있다. @Autowiredprivate ApplicationContext ac; .... RequestMappingHandlerMapping mapping = ac.getBean(RequestMappingHandlerMapping.class); Map map = mapping.getHandlerMethods(); Application Context가 가지고 있는 bean중에 RequestMappingHandlerMapping 클래스가 uri 정보를 들고 있다. 위 소스 처럼 map으로 저장해놓고,Key 안..

개발/Spring 2012.09.04

Cookie에 값이 안들어가지는 것

컨트롤러에서 쿠키에 값을 집어넣으려고 response.addCookie(쿠키이름, 값); 을 해도 JSESSION만 생길뿐, 내가 설정한 쿠키이름으로 set이 되지 않았다. * JSESSION이란 - 클라이언트가 서버에게 요청을 보낼 때, 어떤 클라이언트인지 식별하게 해주는 것 이다. 서버에서 기본적으로 생성해주며, 값은 유일한 값으로 해시코드로 들어있다. 스프링에서는 컨트롤러에 저런식으로 쿠키를 넣는것이 안된다고함. 대신 인터셉터에서는 사용가능 함. 듣기로는 컨트롤러에서 domain, path 설정을 하면 돌아간다고 하는데 그래도 안되는 것 같고, 그래서 결국 CookieGenerator 클래스를 이용해서 CookieGenerator cg = new CookieGenerator(); cg.setCook..

개발/Spring 2012.08.28

@Data annotation이 작동 안할 때 (lombok)

java에서 getter, setter를 일일이 생성하지 않고도 lombok 라이브러리의 @Data 어노테이션을 선언하고 필드를 선언하면 각 필드의 게터 세터가 자동으로 생성이 된다. 그런데, outline을 확인해보면 get, set이 안되어있는 경우가 있다. 그럴 때는 해당 라이브러리인 lombok이 있는 디렉토리로 들어가 실행을 한다. 그러면 이클립스가 나타나고 install/update 버튼을 누른다. parameter를 추가하라고 나올 것이다. 그러면 eclipse.ini 또는 STS.ini (나는 스프링을 쓰므로) 를 열어서 -javaaget:lombok.jar -Xbootclasspath/a:lombok.jar 를 추가한 후 이클립스를 다시 켠다. 그래도 안되면 .class 파일을 다시 떨구..

개발/Spring 2012.08.28

MyBatis] 쿼리에서 특정 문자 제거 (if 사용시)

쿼리를 쓸 때 조건절을 동적으로 사용하는 경우가 많다. 그럴 때 문제가 되는게 연산자나 콤마의 제거이다. 그럴 때는 Mybatis의 trim 을 쓰면 된다. 두가지의 예를 들어보겠다. 1. 맨 끝에 있는 콤마(,)를 제거하는 경우 UPDATE AUTHORusername=#{username},password=#{password},email=#{email},bio=#{bio},WHERE id=#{id} 맨앞에 SET을 붙이고 if안에 무엇이 들어가도 맨 끝에 있는 콤마를 지우겠다는 것이다. 2. 맨 앞에 있는 연산자를(AND 또는 OR) 제거하는 경우 SELECT * FROM AUTHOR OR password=#{password}

개발/Database 2012.08.28

MySql] Insert Select 문

INSERT table1 (id, name, status, date) SELECT id, name, 'GOOD', now() /* id, name은 셀렉트된 값이고, 나머지 값은 임의로 넣은것 */ FROM table2 /* insert 의 테이블과 같아도 상관 없다 */ WHERE id=3 HAVING COUNT(*)=0 INSERT SELECT문을 한문장으로 정의하면 SELECT 된 값을 INSERT에 있는 테이블에 삽입하는 것이다. 먼저 SELECT 문을 보자. table2 라는 테이블에서 id가 3인 데이터가 있는지 없는지 검사하고 그 데이터가 몇개인가 검사해서 0개라면 SELECT 옆에있는 값들을 table1에 INSERT 한다.

개발/Database 2012.08.28

Spirng Batch 로 Batch Job 만들기 (2)

저번 글에 이어서.. batch 프로젝트에서 소스가 잘 돌아가는지 보는 방법임. batch는 서버 필요없이 콘솔에서 로그를 보면 된다. 방법 GOGO! 1. run을 어떻게 할건지 설정한다. 프로젝트에서 우클릭 - Run As - Run Configurations... 2. 창이 뜰 것임. 좌측 Java Application - New를 누른다. 3. 위쪽에 Name을 정해주고 Project에는 project 이름 쓰고,Main Class 는캡쳐되있는 저 클래스 그대로 쓰면 된다. 4. Arguments 탭을 누르고 job.xml이 있는 위치, job 이름, -next 옵션을 붙이고밑에 짤렸는데 Run 버튼 누르면 로그들이 콘솔에 뜰 것이다.-next 옵션은 왜붙이는지는 잘 모름. VM arguments..

개발/Spring Batch 2012.08.17

Spirng Batch 로 Batch Job 만들기 (1)

이번에 일일 집계를 만들면서 spring batch를 처음 써봤다. 인터넷에 batch에 대한 이론 자료는 많으므로 여기엔 딱히 쓰진 않겠다. spring batch는 스케줄 등록하는 기능이 없다.그래서 Jenkins로 시간을 설정해서 빌드하고 batch는 spring batch를 썼다. 하루동안 사람들이 쓴 글의 총 수를 TEXT 테이블에서 셀렉트 해온 후 그 데이터를 AGGT(집계) 테이블에다가 넣는 예제이다. 두가지 방법이 있는데,첫번째는 비지니스 로직 없이 셀렉트해온 값을 바로 인서트 하는예제이다. (1) 비지니스 로직 없이 select 후 바로 insert 하기 1. XML에 JOB을 설정한다. .... -- 한 job에 스텝 여러개 추가 가능 -- query의 namespace+id -- da..

개발/Spring Batch 2012.08.16