현재 오픈소스로 개발 중인 설치형 블로그를 서버에 올려서 테스트하기 위해서 jenkins를 사용해 자동 배포 설정을 하고 외장 톰캣을 사용하려고 했는데 문제가 생겼다.현재 개발 중인 프로젝트는 spring boot를 사용하는데 boot 버전마다 기본 톰캣 버전이 다르다.기본적으로 boot는 내장 톰캣을 사용하는데, 서버에 올려서 사용할 때 외장 톰캣을 사용하기 위해서 톰캣7으로 테스트 했는데 위와 같은 에러가 발생했다.정확히 문제가 무엇이냐면 boot가 버전마다 내장 톰캣 버전이 다르기 때문에 발생하는 에러다.spring boot 1.2.4 이상 : 내장 톰캣8spring boot 1.2.4 이하 : 내장 톰캣7 로컬 환경에서 외장 톰캣7을 사용했을 경우 발생한 에러심각: ContainerBase.add..
Spring Data JPA란? Spring Project 중 하나다. Spring Data Project는 여러가지 Data Repository(JPA, mongoDB, Neo4j, Redis, Hadoop 등)를 지원한다. Data JPA는 JPA를 Spring에서 쉽게 사용하게 만든 프로젝트이다. EntityAbstractPersistable : PK Type에 Primary Key가 자동으로 셋팅된다.?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263@Entity(name = "tbl_user")public class User extend..
① Http 요청 Client에서 웹 애플리케이션에 요청을 하기 위해 Http 요청을 한다. 요청을 하기 위한 여러 메타 데이터(URL, 파라미터 정보, Http method, header, cookie 등)를 전달하면 HttpServletRequest라는 객체로 요청 메타 정보를 담는다. HttpServletRequest는 Http 요청 메타 데이터를 담는 객체다. ② Controller 선택 직접 작성한 Controller로 가장 먼저 요청을 받는 것 처럼 보이지만 실제 처음 요청 받는 부분은 DispatcherServlet에서 처리하게 된다. 즉 DispatcherServlet에서 컨트롤러로 Http 요청을 위임하는 것이다. HandlerMapping : DispatcherServlet에서 Cont..
토이 프로젝트를 진행하다가 spring boot로 개발한 restful API에 CORS 적용이 안되서 에러가 났다.WAS를 spring boot에 내장되어 있는 embedded tomcat을 사용했는데 이 내장 톰캣에 어떻게 CORS를 적용하나 찾아보니 금방나왔다.설정으로 해결하지 않고 CORS Filter를 만들어서 사용한다. source?12345678910111213141516171819202122@Componentpublic class CORSFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(Ser..
Velocity 설정1. pom.xml Velocity도 다른 설정과 마찬가지로 dependency만 추가 하면 모든 설정이 자동이다.?1234 org.springframework.boot spring-boot-starter-velocity2. application.properties velocity를 사용할때 utf-8로 설정을 해야 한글이 깨지지 않는다.spring.velocity.charSet=UTF-8spring.velocity.properties.input.encoding=UTF-8spring.velocity.output.encoding=UTF-8 Velocity 사용1. vm 파일 생성 velocity는 *.vm이라는 확장자를 쓴다. html과 똑같다. 다만 확장자만 vm이고 velocity문..
Spring Boot Data JPA 설정 JPA를 따로 설명하지 않겠다. 나도 사용한지 얼마되지 않았고 사실 잘 모른다. 간단하게 사용해본 정도이고 설정하고 간단하게 사용하는 방법만 포스팅 할 것이다. 1. pom.xml pom.xml에 spring-boot-stater-data-jpa를 추가한다. 예제를 mysql로 사용하기 위해 mysql-connector도 추가한다.?123456789 org.springframework.boot spring-boot-starter-data-jpa mysql mysql-connector-java 5.1.31 2. jdbc, jpa 설정 application.properties에 아래 설정을 추가한다. 물론 자신에 환경에 맞게 jdbc url과 username, pa..
Spring Boot 프로젝트 구조 src > main > java : java classsrc > main > resources : view Template(templates 폴더), resource(static 폴더), properties 구현src > test > java : test 코드 java class 처음 spring프로젝트 구조를 볼때가 생각난다. 지금은 어느정도 이해를 하고 있는 상태라 그런지 Spring Boot에 프로젝트 구조가 일반 프로젝트 구조보다 간단하고 느껴진다. 물론 프로젝트 마다 구조는 다 틀리겠지만 말이다. Tomcat 연동1. pom.xml 외부 tomcat을 사용하기 위해 package를 war로 변경한다.?123456789101112131415161718192021..
Spring Boot 특징war파일을 사용하지 않고 embed tomcat 또는 jetty 사용가능Spring Boot에서 지원하는 stater POM으로 Maven을 간단하게 사용Spring에 수많은 설정을 자동으로 설정(xml설정이 필요 없음), autoconfigure Spring Boot 시작하기 1. pom.xml?1234567891011 org.springframework.boot spring-boot-starter-parent 1.1.8.RELEASE org.springframework.boot spring-boot-starter-web 2. 기본 설정 Spring은 설정이 꾀나 복잡하고 이해하기 어렵다. xml과 javaConfig를 사용해 설정이 가능하지만 SpringBoot에서는 자동 ..
1. HATEOAS(Hypermedia As The Engine Of Application State) HATEOAS는 RESTful API를 사용하는 클라이언트가 전적으로 서버에 의해 동적으로 상호작용을 할 수 있다. 쉽게 말하면 클라이언트가 서버에 요청시 서버는 요청에 의존되는 URI를 Response에 포함시켜 반환한다. 예를들면 사용자정보를 입력(POST)하는 요청 후 사용자를 조회(GET), 수정(PUT), 삭제(DELETE)할 수 있는 URI를 동적으로 알려주게 되는 것이다. 이렇게 동적으로 모든 요청에 의존되는 URI 정보를 보여준다면 아래와 같은 장점이 있을 것이다.요청 URI정보가 변경되어도 클라이언트에서 동적으로 생성된 URI를 사용한다면, 클라이언트 입장에서는 URI 수정에 따른 코드..
1. 개발환경Spring 4.0.3MavenJavaConfig2. pom.xml?123456789101112 org.springframework spring-support 2.0.8 javax.mail mail 1.4.7 3. MailSender 설정(javaConfig)config.xml?12345678910 smtp.gmail.com 25 UTF-8 이메일 주소 이메일 비밀번호 truejavaConfig?123456789101112131415161718192021222324252627import com.woniper.service.MailService;import org.springframework.beans.factory.annotation.Autowired;import org.springframe..