인텔리제이에서 실행과 jar파일 배포해서의 실행 차이에 대해 궁금합니다.
762
작성한 질문수 1
@Controller
@RequestMapping("/test")
public class TestController {
@GetMapping("/test")
public void test1(){
System.out.println("test1");
}
@GetMapping("/test2")
public String test2(){
System.out.println("test2");
return "test/test";
}
@GetMapping("/test3")
public String test3(){
System.out.println("test3");
return "/test/test";
}
}
위와 같이 컨트롤러 작성하고
resources/templates/test/test.html 파일을 생성해 두었습니다.
인텔리제이에서는 아무런 문제없이 test, test2, test3 모두 정상적으로 실행되는데
jar파일 생성후 java -jar로 실행하면 test, test2는 실행되는데 test3를 호출하면
http://localhost:8080/test/test3
ERROR 3380 --- [nio-8080-exec-3] org.thymeleaf.TemplateEngine : [THYMELEAF][http-nio-8080-exec-3] Exception processing template "/test/test": Error resolving template [/test/test], template might not exist or might not be accessible by any of the configured Template Resolvers
위와 같이 오류가 발생됩니다.
test3의 리턴값에 "/" 을 붙여 절대경로로 설정되어 있는것인데. 왜 인텔리제이에서는 정상적으로 실행되는반면 jar배포 파일로 실행하면 오류가 발생되는지 모르겠네요.
1. 위의 상황에서 리턴값에 "/" 이 포함안된 상대경로로 하는게 맞는것인지? "/" 포함된 절대경로로 하는게 맞는것인지? 또는 둘다 맞는것인지 궁금합니다.
2. 인텔리제이와 jar파일 배포시 왜 다른 결과가 나오는지 궁급합니다.
인텔리제이 2020.0.4 버전
스프링부트 2.5.0
자바 11
답변 2
2
안녕하세요. pimang님
결론부터 말씀드리면 test3과 같은 방식은 사용하시면 안됩니다. test2와 같은 방식을 사용하셔야 합니다.
기본으로 다음 두가지를 함께 조합하는데요.
prefix = "classpath:/templates/"
suffix = ".html"
test/test
classpath:/templates/test/test.html
/test/test
classpath:/templates//test/test.html
조합된 결과를 보시면 결과적으로 // 슬래시 2개가 들어가게 됩니다.
여기에서 IntelliJ에서 동작하는 이유는 저도 잘 모르겠지만, 결국 다른 환경에서 잘 동작하지 않을 가능성이 높습니다.
1번의 경우 return이 void이면 요청 URL을 맞추어서 뷰의 경로를 찾아줍니다. 그런데 이때도 2번과 같이 앞의 슬래시는 제거된다고 이해하시면 됩니다.
감사합니다.
인텔리제이 오류
0
50
1
..
0
113
2
Unused property.....
0
121
2
project JDK is misconfigured
0
166
2
외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석
0
102
2
단위/통합 테스트 버전충돌 문제
0
103
2
❗️springboot 4.0.2 버전 aspectj dependency 설정❗️
0
256
1
왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?
0
125
2
윈도우 build test오류 질문
1
123
2
테스트 관련 공부에 대한 조언을 얻고 싶습니다
0
113
2
테스트 실행 시 에러 질문
0
316
1
name을 통한 비교와 객체를 통한 비교
0
82
1
빌드 후 libs 없음
1
149
1
윈도우 gradlew.bat 에러
0
186
1
@PostMapping("/members/new")가 동작하지 않습니다
0
98
1
java static class와 kotlin class
0
89
1
스프링 DB연결
0
145
1
소요 시간
0
96
2
ddl.sql에 빨간 밑줄
1
118
2
welcome page 에러
0
201
3
잘 모르겠습니다.
0
173
2
fail을 똑같이 쳤는데 오류가 발생해요
0
173
2
index.html Welcome page
0
137
1
프로젝트 gradle-groovy ?
0
403
1





