본문 바로가기
Spring

Spring Boot hot swapping(springloaded debuging) 방법

by 아이티.파머 2016. 9. 1.
반응형

*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








반응형