play1.3-jdk8-spring4.1.6 테스트 한 내용이다.
결론은 '그대로는 안되고, 동작되게 한다 해도 그걸 위해 해야 하는 오버헤드가 있다는 점 '
spring 3에서는 classpath 를 엄격히 따지지 않았는데, spring 4 부터는 해당 클래스가 classpath에 있는지 엄격히 본다.
spring 3에서는 문제가 없었는데, spring 4는 precompile된 클래스들을 scanning하고 잘 하고, spring container 초기화할 때, classpath에 있는지 체크한다. 따라서 아래와 같은 에러가 발생할 수 있다.
'
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.google.map.Location]; nested exception is java.io.FileNotFoundException: class path resource [com.google.map.Location] cannot be opened because it does not exist
'
다양한 테스트 끝에 precompile된 클래스를 jar로 묶어 lib/ 디렉토리안에 복사하니, 잘 동작한다.
참고로 play classpath는 아래와 고정되어 있고, 사용자 정의 classpath를 추가하거나(play 소스를 고쳐야 한다), play의 spring 사용 부분은 webapp의 spring 관련 패키지를 모두 jar로 바꾸면 된다.
'
The conf/ directory for the application
The $PLAY_PATH/framework/play-$version.jar
All JAR files found in your application’s lib/ directory
All JAR files found in the $PLAY_PATH/framework/lib/ directory
참조 : https://www.playframework.com/documentation/1.2.2/ide#Classpathsettings
'
구질구질해서 java7 + spring 3 + play 1.3 쓰는 게 나을 것 같다.
참고로 play2 spring 연동 모듈을 살펴보면, scanning하는 코드가 없는 이유가 있다.
그냥 컴파일하고 쓰기 때문에 복잡하지 않다.play1은 precompile이라는 특이한 기능때문에 classpath 연동 이슈가 생길 수 있다.
'general java' 카테고리의 다른 글
[jenkins] Unable to read config.xml (0) | 2015.07.02 |
---|---|
[jenkins] 설정 백업 (backup) - thinBackup 플러그인 (0) | 2015.07.01 |
[intellij] Spring Boot 프로젝트 실행시 자동 Reloading 되도록 설정하기 (0) | 2015.06.17 |
[spring] 3.2 에서 4.1 migration시 org.springframework.mail.javamail.JavaMailSenderImpl cannot be resolved (0) | 2015.06.03 |
spring cglib default 생성자 (0) | 2015.06.03 |