개발/Spring 20

[Spring] Service 객체에서 초기화 하는 init 메소드 만들기

어떤 @Service 어노테이션을 쓰는 비지니스 로직이 있는 객체에서 나의 경우에는 Map을 초기화 해놓고 싶었다. 그러니까 소스로 예를 들면, @Service public class test { public Map map; // 이거 초기화 세팅을 어디서...? public void foo() { map.get("key"); } } 저 map을 초기화 해놓고 foo() 메소드에서 쓰고싶은데 어떻게 하면 좋을까? 예전에는 bean 설정에서 init-method 설정을 통해 초기화해주는 메소드에서 구현하면 되었다. 아래와 같이 initData 메소드에서 세팅하면 된다. 근데 어노테이션으로 간단히 하려면. 아래와 같이 사용하면 된다. @Service public class test { public Map m..

개발/Spring 2014.05.15

[Spring MVC + Maven] Project 생성하기

맨날 시니어개발자분들이 만든 환경에서만 개발해봤지 혼자 해본적이 없어서세팅을 해봤는데, 패키지 설계부터 뭘 어떻게 해야할지 막막했다. 프로젝트 만드는거에서부터 삽질을 했다 그래서 정리를 해보겠다.(MAC환경에서 했으나 다를건 없을 것이다) 환경 세팅 1. STS 다운로드 STS에는 메이븐 플러그인이 기본으로 깔려있으므로 이걸로 설치. http://spring.io/tools/sts/all 2. Tomcat 다운로드 원하는 버전의 톰캣 다운로드. (나는 7을 받았음) http://tomcat.apache.org/download-70.cgi 이제 본격적으로 프로젝트 생성하기 위에있는 동그라미 아이콘을 누른 후(Dashboard) Spring Project를 클릭한다. 아래와 같은 창이 뜨면, 프로젝트 이름 ..

개발/Spring 2013.09.20

Custom annotation 만들기 (Spirng AOP 이용)

예전 블로그에 올렸던거 슬슬 여기로 옮겨놔야지..다시 정리해본다ㅎㅎ 사용자가 만들어 사용하는 Custom Annotation은 어떻게 효과적으로 응용할 수 있는지 궁금할 것이다.인터넷에 예제도 별로 없고.. 내가 짠 것은 아니지만, Spring 프렘웍의 AOP를 이용해서 만든 커스텀 어노테이션 사용법에 대해서 정리하겠다 * AOP(Aspect Oriented Programming)이란? 먼저, OOP(Object Oriented Programming)의 경우, 객체 단위로 기능을 묶어서 코딩하는 방법이다.이런 구현방법이 단점이 될 상황이 있다. 사용자 인증을 항상 해야 한다고 하면, 객체마다 반복되는 코드가 생기게 될 것이다. 그래서 사용자 인증 같이 자주 사용되는 코드를 단위로 묶어서 필요할 때마다 삽..

개발/Spring 2013.04.09

특정 날짜 하루에 해당하는 데이터를 찾을 때

아래 처럼 날짜를 text box에 입력 받는다. String으로 받아서 select * from 테이블 where dttm = '2013-02-15' 조회를 해보면 데이터가 원하는대로 나오지 않는다. 기본으로 '2013-02-15 00:00:00' 이렇게 들어있기 때문이다. (2월15일의 딱 열두시 00분 00초 인 데이터를 찾는것) 그래서 전에는dttm >= '2013-02-15 00:00:00' AND dttm DTTM >= #{dttm} AND DTTM dttm에는 2013-02-15 00:00:00.0 (타임스템프) 값이 들어있다.interval 1 day로 하루가 더해지면,2013-02-15 00.00.00.0 ~ 2013-02-16 00.00.00.0 사이의 데이터가 보여지게 되는 것이다. ..

개발/Spring 2013.02.15

Java에서 CSV 파일 생성,다운로드. 한글 인코딩~

DB에서 받아온 데이터를 웹페이지에서 CSV 파일로 다운받게 하기.아래는 한글 깨지는것도 처리 해놓은 방법임! 이렇게하면 CSV파일을 어딘가에 저장하지 않고도 바로 다운로드 할 수 있음. 옛~날에 PHP로 해봤으면서 왜 자바에서는 흐름도 못잡고 몇일을 삽질 했을까ㅠㅠㅠㅠㅠ 1. HTML 페이지에서 다운로드 링크를 건다. 엑셀파일다운로드 2. Controller (Action) 1번에서 링크 클릭하면 타고 들어오는 액션.. @RequestMapping("/total") public ResponseEntity getTotalList() { List totalList = totalService.getTotal(); // DB에서 가져온 데이터리스트 HttpHeaders header = new HttpHeade..

개발/Spring 2012.09.12

프로젝트의 모든 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