Spring loaded 사용해보기
- (작성일 기준으로 1.2.8 버전이 최신버전)
- 자바(with Spring)를 개발하다보면 Class를 추가/변경 하는 작업을 많이 한다. 그럴때마다 서버를 리스타트하는 일은 엄청나게 번거로운 일이다. 그래서 자동으로 reload 시켜주는 걸 찾아봤다.
1. 설치하기
- pom.xml
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.8.RELEASE</version>
</dependency>
</dependencies>
</plugin>
</plugins>
- jar 다운로드(이 경우에는 다운로드한 경로를 따로 복사해 놓으세요.)
http://mvnrepository.com/artifact/org.springframework/springloaded/1.2.8.RELEASE
2. Spring Boot
1) maven 명령어로 실행
spring-boot:run 을 실행시킨다.
2) vm option 추가
javaagent:
/springloaded-{VERSION}.jar -noverify
(1) Intelli J 일 경우
- File -> Setting -> Build, Execution, Deployment -> Compiler
- Build project automatically 체크!!
(2) Eclipse 일 경우
- 추후 작성
3. Spring Framework + Tomcat
- 추후 작성
4. Daemon 실행
java -javaagent:
/springloaded-{VERSION}.jar -noverify SomeJavaClass
5. 테스트 결과
1) 전역변수 추가 -> 안됨.
- 테스트 코드(변경 전)
@RequestMapping(value = "/")
public ResponseEntity<String> test() {
return new ResponseEntity<String>("INDEX", HttpStatus.OK);
}
- 테스트코드(변경 후)
private String ma = "test222";
@RequestMapping(value = "/")
public ResponseEntity<String> test() {
LOG.info("test : {} ", ma);
return new ResponseEntity<String>("INDEX", HttpStatus.OK);
}
- 결과
2) @Controller 추가 -> 안됨.
@Controller
public class Test {
@RequestMapping(value = "/test")
public ResponseEntity<String> test2() {
return new ResponseEntity<String>("INDEX 2", HttpStatus.OK);
}
}
3) @RequestMapping 추가 -> 안됨.
@RequestMapping(value = "/test")
public ResponseEntity<String> test2() {
return new ResponseEntity<String>("INDEX 2", HttpStatus.OK);
}
- 404가 뜬다.
4) Class 추가 - 됨!!
- 테스트 코드
public enum TestCd {
BOOK, NOTE;
}
- 잘 추가/수정 된다.
5) 지역변수 -> 됨!
@RequestMapping(value = "/")
public ResponseEntity<String> test() {
String testValue = "test test test";
LOG.info("test : {} ", testValue);
return new ResponseEntity<String>("INDEX", HttpStatus.OK);
}
- 잘 추가/수정 된다.
관련문서
- https://github.com/spring-projects/spring-loaded
- https://andromedarabbit.net/spring-loaded%EC%99%80-gradle%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%B4-%ED%95%AB%EC%8A%A4%EC%99%91-%EC%A7%80%EC%9B%90%ED%95%98%EA%B8%B0/
- http://www.holaxprogramming.com/2015/05/29/spring-boot-and-loaded/