개인코딩공부방

Spring 3.x -> Boot 1.8x 전환 후기 본문

웹/Spring Framework

Spring 3.x -> Boot 1.8x 전환 후기

atlasia 2020. 5. 5. 19:10

[AS-IS]

spring mvc(java-configuration)+tiles+jsp
-> 

[TO-BE]

spring boot+embeddedTomcat+jsp+tiles
변환 결과

1) WebApplicationInitializer -> SpringBootServletInitializer로 변경
2) jndi(datasource)가 기존에 context.xml에 정의 되어있으면 해당 파일을 embedded Tomcat에서 불러올 수 없음(외장 tomcat인 경우 가능)
따라서 TomcatEmbeddedServletContainerFactory와 jndiDataSource bean을 정의 해야함
3) 기존에 작성하여 추가한 filter는 별도의 bean을 통해 정의 해야함
filterRegisteration.Dynamic ... 형태로 filter의 명칭이나 url을 정의한 것을 인식하지 못함

4) tiles설정은 java configuration과 동일하므로 생략

5) jsp호출시 antPathRequesterMatcher에서 오류가 나는 경우 해당 오류를 출력해볼것(spring boot에서 log로 남아 log level을 설정하지 않으면 해당 오류를 확인할 수 없음)

6) jsp페이지의 상단의 taglib를 정리하기 위해 jsp page import한 경우 해당 태그 인식 불가.
이 경우 jsp page import를 해제 하고 직접 코드를 추가해야함

7) dispatcher servlet에서 prefix, suffix를 설정하기 위해 viewResolver를 추가 하였으나 
이는 application.properties(application.yml)에서 설정을 통해 지정 가능
[application.yml] 설정

	spring:
		mvc:
			throw-exception-if-no-handler-found: true
		view:
			prefix: /WEB-INF/views/
			suffix: .jsp



8) java에서 classpath 경로의 파일을 호출 하는 경우 인식이 안될 수 있음. 직접 테스트하고, war배포를 통해 경로를 다시 한번 확인 해야함.

9) html/css/js에서 상대 경로를 통해 호출 하는 경우 호출이 안됨. 절대 경로 혹은 '../' or './'를 '/'로 변경할 것

10) maven 설정값 또는 xml 설정 값이 spring에서는 ${...}으로 되어있어 자동으로 주입되었으나 boot에서 인식이 안되는 경우가 발생하여 @...@로 변경해야함

11) jsp view를 사용하기위한 pom.xml 설정

<!-- JSP 설정 -->
	<dependency>
		<groupId>javax.servlet.jsp.jstl</groupId>
		<artifactId>javax.servlet.jsp.jstl-api</artifactId>
		<version>1.2.1</version>
	</dependency>
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>javax.servlet-api</artifactId>
		<version>3.1.0</version>
		<scope>provided</scope>
	</dependency>
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>jstl</artifactId>
		<version>1.2</version>
	</dependency>
	<dependency>
		<groupId>javax.servlet.jsp</groupId>
		<artifactId>jsp-api</artifactId>
		<version>2.2</version>
		<scope>provided</scope>
	</dependency>
	<dependency>
		<groupId>org.apache.taglibs</groupId>
		<artifactId>taglibs-standard-impl</artifactId>
		<version>1.2.5</version>
	</dependency>
	<dependency>
		<groupId>org.apache.tomcat.embed</groupId>
		<artifactId>tomcat-embed-jasper</artifactId>
	</dependency>




12) tomcat jsper까지 추가했는데 jsp 페이지가 안나오며 'No Java compiler available for configuration options compilerClassName: [null] and compiler: [null]'와 같은 문구가 나올 시

<dependency>
    <groupId>org.eclipse.jdt.core.compiler</groupId>
    <artifactId>ecj</artifactId>
    <version>4.6.1</version>
    <scope>provided</scope>
</dependency>



을 pom.xml에 추가할것

Comments