본문 바로가기

Spring

wget 을 이용한 Spring 관련 레퍼런스 & API 문서 다운로드 사람마다 다른 부분일수는 있겠으나 나는 개인적으로 Spring 관련 프로젝트들의 reference 및 API 문서를 다운로드 받아서 보관하는 편이다. SI 프로젝트를 참여하다보면 내가 일하는 환경이 외부 인터넷을 사용할 수 없는 경우가 종종 있다. 그렇다고 스마트폰으로 접속해서 보기에는 화면이 너무 작아 보기 불편한 점도 있다. 그래서 개인적으로 내가 가지고 있던 기존 문서가 minor 버전이 바뀐게 있으면 새로 받아서 이를 업데이트 하는 편이다(minor 버전 정도 바뀌면 프레임워크나 라이브러리 내부적으로 바뀌는 부분이 존재하기 때문이다. 조금 더 부연설명하다면 Spring의 경우 5.1.2 이런식의 구조인데 가운데 숫자인 1에 해당되는 부분이 minor 버전이다) 이러다 보니 자주 이용하게 되는 것이..
Mastering Spring 5.0 다음의 내용은 에이콘출판사의 Mastering Spring 5 책을 읽고 실습해나가면서 몇몇 수정한 부분들에 대한 기록이다. 책이 출판될 당시의 Spring Boot 관련 버전과 내가 책을 구매한 시점에서 사용되는 Spring Boot 관련 버전이 다른 관계로 인해 실습 코드에서 변화되는 부분이 있어서 이에 대한 기록을 남겨두려 한다. 이 책에서 사용한 Spring Boot 버전은 2.0.0.M1 이고 2019년 5월 7일 현재 이 글을 쓰는 시점에서 내가 사용하고 있는 Spring Boot 버전은 2.1.4.RELEASE 이다(당근 Springframework 버전도 차이가 나게 되는데 책은 5.0.0.RC1을 사용하고 있으나 내가 사용하고 있는 Springframework의 버전은 5.1.6 이다) ..
Maven에서 Tomcat을 실행시켜 결과를 확인해보자.. 기존에 Maven을 이용해서 Spring MVC를 개발할때는 어떤식으로는 WAS가 자신의 컴퓨터에 설치되어 있어야 했다. Tomcat이든 JBoss든..아마 대부분 Tomcat을 설치해서 하겠지만.. 근데 Eclipse에서 Tomcat 기반으로 개발할땐 불편한점이 몇몇 있었다. 프로젝트 설정에서 Deployment Assembly의 속성을 건드려줘야 하고 또 pom.xml에서 dependency 태그에 있는 javax.servlet.servlet-api와 javax.servlet.jsp-api를 주석처리를 했다가 다시 war로 배포할때는 주석처리한것을 지워야 했다(scope를 provided로 해도 tomcat 기동시 오류 발생..) 그래서 이런 불편한 점을 없애볼려고 시도한것이 Jetty를 이용해서 빌..
Spring 3.1의 Controller에서 Custom Annotation을 파라미터로 이용했을때의 Map 클래스 받는 법 최근에 Spring 3.2와 마이플랫폼 연동을 하는 과정을 하면서 애로사항을 겪은 것이 있어서 이 포스트를 통해 정리하게 되었다. Controller에서 메소드의 파라미터에 Custom Annotation을 이용하여 사용자가 보낸 값을 받을때 Map으로 받는 것에 문제가 있었다. 이렇게 얘기하면 와 닿지가 않을수도 있을것 같아 예를 들어보도록 하겠다. 흔히 Controller의 메소드에서 파라미터를 사용할때 다음과 같이 상황에 맞는 적절한 어노테이션을 사용하게 될 것이다. public String getList(@RequestParam(name="no") int no) throws Exception 이렇게 파라미터를 받아다가 변수에 바로 설정하는 식의 방법을 많이 사용할것이다. 위의 예에서는 int 형으..
<mvc:annotation-driven> 태그 설정으로 올라오는 bean 태그 내용(3.1 버전용) 예전에 포스트 했던 내용중 을 Spring 환경설정 파일에 넣었을 경우 내부적으로 어떤 Bean 설정들이 되는지를 다뤘던 내용이 있었다. 그러나 Spring이 3.1 버전으로 바뀌면서 이 부분도 변화를 겪게 되어 이 부분에 대한 정리도 새로 하게 되었다. Spring이 3,0에서 3.1 버전으로 바뀌면서 Spring MVC에 변화가 생겼기에 이 부분에 변화가 생긴 것이다. 변화가 된 내용은 구글링 해보면 나오니 구글링 하기 바란다. 주석을 이용해서 약간의 설명을 추가해두었다. 주석을 읽어보길 바란다
Custom Annotation을 이용한 객체 검증 작업..(3) 이제 마지막으로 이렇게 검증 작업을 할때 에러 메시지를 출력하는 것과 어떤 기준으로 에러 메시지를 골라서 출력하는지에 대해 설명하고자 한다. Spring에서 객체 Binding 관련 에러 메시지를 관리할때는 일종의 규칙이 존재한다. 예를 들어 이제껏 설명한 예였던 입력한 값을 객체에 Binding 하면서 데이터 중복을 체크하는 과정에서의 에러 메시지에 대한 내용을 얘기해보자. 데이터 중복에 대한 메시지는 여러 형태를 가질수 있다. 단순히 "이미 입력된 값입니다" 도 있을수 있고 "입력한 이름은 이미 입력된 값입니다" 이렇게 나타낼수도 있다. 하지만 그렇다 해도 중복 에러에 대한 에러코드는 변함이 없어야 한다. "이미 입력된 값입니다"의 에러코드는 ExistCheck이고 "입력한 이름은 이미 입력된 값입니..
Custom Annotation을 이용한 객체 검증 작업..(2) 저번 포스팅에 이어서 이번엔 ConstraintValidator 인터페이스를 구현하여 검증 역할을 하는 클래스인 ExistCheckValidator가 사용하는 비즈니스 서비스와 이를 Controller 및 jsp에서 어떻게 표현되는지를 다뤄보고자 한다. ExistCheckValidator 클래스는 검증 업무를 하는 서비스인 ValidateService 클래스 객체를 갖고 있다. ValidateService는 중복여부를 체크하는 함수인 existCheck 함수만 정의되어 있는 인터페이스이며 ExistCheckValidator 클래스에는 ValidateService 인터페이스를 구현한 클래스인 ValidateServiceImpl 클래스가 DI된다. 그런 내용을 알고 다음에 나오는 ValidateService..
Custom Annotation을 이용한 객체 검증 작업..(1) 이번 포스팅에서는 Spring에서 모델(Model)을 검증(Validate)하는 부분을 다뤄보고자 한다. 이 포스팅을 Spring을 잘 다루지 못하는 초보분들도 보시겠지만 지금 다루고자 하는 글은 약간 응용편이기 때문에 모델을 검증하는 기본적인 내용은 책이나 인터넷을 보시길 바란다. 책이나 인터넷에 이미 나와있는 뻔한 내용을 포스팅해봤자 보는 사람이나 글을 쓰는 사람이나 별 의미가 없기 때문이다. 개인적으로 Spring Controller에 값을 전달할때 Model 개념을 잘 사용하는 편이 아니다. 개인적으로 Model을 이용해서 등록하는 방법보다 Ajax를 통하여 등록하는 방법을 사용하고 등록에 대한 결과를 JSON 문자열로 받아 클라이언트에서 받은 JSON 문자열 값을 분석하여 그에 맞는 행동을 하도..