본문 바로가기

[B] Spring Note

1) pom.xml 를 내 프로젝트에 맞게 변경하기



** 본 [Spring Note]의 (1) ~ (?) 까지의 정리한 내용는 "코드로 배우는 스프링 웹 프로젝트(개정판)" 를 학습하면서 정리한 것입니다.


Spring Legacy Project > Spring MVC project 로 생성(이하 "기본 생성" 라고 함)한 기본 POM.xml 설정 값을 


내 프로젝트에 맞게 다음 사항을 변경한다..


0. 내 프로젝트 환경


   - Tomcat 8.x / java 1.8 / Maria DB 10.x


1. properties 의 <java-version> 를 1.6에서 1.8로 변경함. 


   - 주의 사항 : maven-compiler-plugin > configuration > source / target 도 1.8로 변경해야함


2. properties 의 <org.springframework-version>를 "3.1.1.RELEASE" 에서 "4.3.20.RELEASE" 로 변경함


   - Tomcat 9.0 버전인 경우에는 spring 5.0.7.RELEASE 를 사용함

   - 내 프로젝트 환경은 Tomcat 8.x 로 spring 4.x를 사용함


3. <org.aspectj-version>과  <org.slf4j-version>는 Spring 5.x에서 AOP를 사용할 경우 변경함


   - <org.aspectj-version> : 1.6.10 ->  1.9.0

   -  <org.slf4j-version>    : 1.6.6   ->  1.7.25



4. spring-context, spring-webmvc 는 <org.springframework-version> 으로 기본 설정됨(변경사항 없음)


5. VO 클래스의 Setter/Getter 등을 자동 셑팅해주는 lombok 라이브러리 추가(p54)


<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-test</artifactId>

<version>${org.springframework-version}</version>

</dependency>

<dependency>

<groupId>org.projectlombok</groupId>

<artifactId>lombok</artifactId>

<version>1.18.2</version>

<scope>provided</scope>

</dependency>


6. AspectJ 관련한 aspectjrt 는 <org.aspectj-version> 으로 기본 설정됨(변경 사항 없음)


7. Logging 관련한 slf4j-api, jcl-over-slf4j, slf4j-log4j12 는 <org.slf4j-version> 으로 기본 설정됨(변경사항 없음)

   -
 다만, log4j 의 <exclusions>,<scope> 설정을 지우고, <version>를 1.2.16 으로 변경하고

   - 아래 log4jdbc-log4j2-jdbc4 를 추가함


<dependency>

<groupId>org.bgee.log4jdbc-log4j2</groupId>

<artifactId>log4jdbc-log4j2-jdbc4</artifactId>

<version>1.16</version>

</dependency>


   * Java Resources > src/main/resources 에 log4jdbc-log4j2.properties 설정 파일을 추가함


[설정 파일 내용]


log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator


   * log 레벨 : src/test/resources/log4j.xml (p104) >> [심화학습]


8. Inject 관련 설정은 변경 사항 없음


9. Servlet 관련 설정은 아래와 같이 변경된 <artifactId>, <version> 복사하여 사용함( 다만, jstl는 1.2 로 유지함 )


<dependency>

<groupId>javax.servlet</groupId>

<artifactId>javax.servlet-api</artifactId>

<version>3.1.0</version>

<scope>provided</scope>

</dependency>

<dependency>

<groupId>javax.servlet.jsp</groupId>

<artifactId>javax.servlet.jsp-api</artifactId>

<version>2.3.0</version>

<scope>provided</scope>

</dependency>


10. Test관련 junit 은 4.7에서 4.12로 변경함.


** 11번 부터는 기본 생성 pom.xml에 없는 추가 라이브러리 추가임


11. 커넥션풀 라이브러리 HikariCP 추가 / 버전 2.7.4 (참고 링크)


12. MySQL 관련 추가 설정 및 버전(p90)


     - mysql-connector-java

     - mybatis

     - mybatis-spring

     - spring-tx

     - spring-jdbc


13. JSON 관련 jackson-databind 추가 / 버전 2.9.7


14. 파일 첨부 관련 commons-fileupload 추가 / 버전 1.3.3


15. 6번 AspectJ 밑에 AOP 관련 aspectjweaver 추가 / 버전은 org.aspectj-version으로 기본 설정함


------ 추가 설정 내용 ------


A1. spring security 관련 추가 설정(p608 참고)


<dependency>

<groupId>org.springframework.security</groupId>

<artifactId>spring-security-web</artifactId>

<version>5.0.6.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework.security</groupId>

<artifactId>spring-security-config</artifactId>

<version>5.0.6.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework.security</groupId>

<artifactId>spring-security-core</artifactId>

<version>5.0.6.RELEASE</version>

</dependency>

<dependency>

<groupId>org.springframework.security</groupId>

<artifactId>spring-security-taglibs</artifactId>

<version>5.0.6.RELEASE</version>

</dependency>