*spring devtools
devtools 이라는 훌륭한 녀석 덕분에 정정인 파일이 변경되었을때도 일일이 리스타트 하지 않고 변경해준다.
하지만, java file일이 수정되고 compile 되는 순간 감지하고, 서버를 restart 시켜 버리니 워낙 번거로움이 있다.
<!--// Spring 1.3version 이상부터 지원하는 devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
이에 핫스와핑 기술을 이용할 것인데 우리가 알고 있는 jRebel과 같은 기능이다.
springloaded 을 이용하여 핫스와핑 이 문제가 많다고 하는 이야기를 볼수 있는데, 몇가지 부분에서는 리로딩이 안되고 어쨋든 리스타트 시켜줘야 한다. (1.8에 적용된 몇가지 메소드 , 환경설정 ,글로벌 변수 등등) jRebel도 완벽하게 지원하지는 못한다.
비지니스 로직을 수정하고 처리하기엔 안성맞춤이다.
* springloaded
<build>
<finalName>com.knkcorp.tms.web</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- /////////////////////////////////////////// -->
<!-- // Spring loaded configration 으로 jRebel 같은 hot swapping -->
<!-- // Spring devtool 을 이용할시 해당 구문 주석으로 처리 (springloaded) -->
<!-- /////////////////////////////////////////// -->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.5.RELEASE</version>
</dependency>
</dependencies>
<configuration>
<jvmArguments>
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=80 -Dspring.profiles.active=dev
</jvmArguments>
</configuration>
</plugin>
......
springloaded를 이용하면 디버기은 어덯게 하지? 라는 문제에 봉착할수 있는데.
위와 같은 방법으로 configration에 jvm 속성을 주고 디버깅 모드로 돌릴 수 있다.
이후 maven goal 을 spring-boot:run 으로 주게되면 작성된 속성값을 가지고 올라가 debugging 모드 대기 상태로 된다는 알림과 함께
콘솔창에 링크가 나타난다. 링크를 클릭하여 Spring Boot Application을 실행. 이후 디비겅 모드로 개발을 실시!
* 추가
콘솔창에 나타난 링크를 클릭하지 않고 ...Configration 에서 Remote Java Application을 생성하여, 직접 실행 하여도 된다.
http://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-debug.html
'Spring' 카테고리의 다른 글
Spring redirect POST 전송 RedirectAttributes Parameter (0) | 2017.05.31 |
---|---|
redirect / forward Parameter 전체 (0) | 2017.05.31 |
Spring Transaction is already completed - do not call commit or rollback more than once per transaction (0) | 2016.03.07 |
Spring Transaction 선언적 트랜잭션(AOP) , 메소드에서 직접 실행(DefaultTransactionDefinition) (0) | 2016.03.03 |
QueryDSL paging (JPAQuery / Hibernate) (0) | 2016.01.17 |