티스토리 뷰

메인인 springboot app(app1)이 있고 front의 틀을 잡아주는 Tiles는 별도의 어플리케이션(app2)에 들어가 있다. app1에서는 app2에 대해 dependency를 걸고 있는 상황이다. app2가 jar로 app1에 library처럼 들어간 것이다.

springboot + tiles 

그림으로 표현하자면 위와 같은 모습이다. tiles가 jar 형태로 배포가 되어야 하기에 webapp/WEB-INF 하위에 위치를 시킬 수 없어서 META-INF/resoureces/WEB-INF 하위에 tiles를 위치시켰다.

IDE 상에서 dependency를 걸었을때는 다음과 같은 기본 설정으로도 잘 되었다.

springboot + tiles 설정 (기본)

@Bean public TilesConfigurer tilesConfigurer() { TilesConfigurer tilesConfigurer = new TilesConfigurer(); tilesConfigurer.setDefinitions("/WEB-INF/tiles/tiles-layout.xml"); return tilesConfigurer; }


하지만 maven build를 했을때는 이런 설정을 읽지 못하여 ServletContext resource cannot be resolved to URL because it does not exist 이런 오류가 발생하며 동작하지 않았다. library 안의 tiles 파일에 대해 제대로 인식을 하지 못하였다. 따라서 이렇게 tiles 설정파일이 외부 jar 형태로 빠져 있는 경우에는 다음과 같이 tiles 설정을 변경하였다.

springboot + tiles 설정 (tiles가 외부 jar 형태로 존재할때)

@Bean public TilesConfigurer tilesConfigurer() { TilesConfigurer tilesConfigurer = new TilesConfigurer(); tilesConfigurer.setDefinitions("classpath*:/META-INF/resources/WEB-INF/tiles/tiles-layout.xml"); return tilesConfigurer; }


흔히 일어나지는 않는 상황이지만 꼭 tiles 뿐만 아니라 외부 jar의 특정 파일을 가져와야할때 spring에서는 이렇게 가져온다고 알고 있자.

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31