자바 웹 개발 개발환경 세팅(8) Spring Project 2
1. POM
- 생성된 프로젝트에서 pom.xml 파일을 클릭합니다.
- pom.xml 파일은 프로젝트에 필요한 객체를 모델링해서 관리하는 파일입니다.
2. 전자정부 표준 프레임워크
- 구글에서 전자정부 표준프레임워크 검색
- 표준프레임워크 소개 > 구성 > 버전별 구성 확인
- 현재 현황에 맞춰 3.9로 구성해 보겠습니다.
- 표준프레임워크 소개 > 구성 > 오픈소스 SW현황 확인
- 실행환경에 3.9 버전만 체크 후 버전 확인
3. POM Setting - properties
- Spring Framework 4.3.22 버전으로 변경
- java 1.8 버전으로 변경
- Log4j 2.11.2 버전으로 변경
- Slf4j 1.7.25 버전으로 변경
- aspectj 1.9.5 버전으로 변경
- Spring Security 4.2.11 버전으로 변경
- jackson 2.10.0 버전 추가
4. POM Setting - Spring
- spring-context : root-context(DB 연결)와 servlet-context(JAVA연결) 제공 라이브러리
- spring-webmvc : springMVC, REST웹 서비스 제공 라이브러리
- spring-test : 테스트 제공 라이브러리
- spring-tx : 트랜잭션 제공 라이브러리
- spring-jdbc : jdbc 제공 라이브러리
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
5. POM Setting - AspectJ
- AOP를 구현하기 위해 사용, 핵심적 인기 능에 부가되어 의미를 갖는 모듈이라 볼 수 있습니다.
- aspectjrt : aspectj 런타임 제공 라이브러리
- aspectjweaver : aspectj 코드 생성 유틸리티 라이브러리
<!-- AspectJ -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${org.aspectj-version}</version>
</dependency>
6.POM Setting - Logging
- 로그를 사용하기 위해 사용합니다.
- jcl-over-slf4j : jcl과 slf4j를 이어주는 라이브러리
- log4j-core : log4j 제공 라이브러리
- log4j-slf4j-impl : log4j와 slf4j를 이어주는 라이브러리
- <exclusions> : 해당 라이브러리 제외
- log4j-api : log4j api 제공 라이브러리 (제외-spring framework 사용 시 기본 로깅과 중복 동작할 가능성이 있음)
- log4jdbc-log4j2-jdbc4 : 로그 출력 라이브러리
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${org.log4j-version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${org.log4j-version}</version>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
<version>1.16</version>
</dependency>
7. POM Setting - Inject
- 주입하려는 객체의 타입이 일치하는 객체를 자동으로 주입시키기 위해 사용합니다.
- javax.inject : inject 제공 라이브러리
<!-- @Inject -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
8. POM Setting - Servlet
- javax.servlet-api : 자바를 사용하여 웹페이지를 동적으로 생성하는 java servlet 제공 라이브러리
- jsp -api : jsp api 제공 라이브러리 (jsp를 사용하는 것이 html환경에서 개발하는 것보다 개발하기 편리합니다.)
- jstl : jstl 제공 라이브러리(jstl은 표준 태그 라이브러리로 자바 코드를 바로 사용하지 않고 로직을 내장하는 효율적인 방법을 제공합니다.)
<!-- Servlet -->
<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>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
9. POM Setting - DB
- mysql-connector-java : mysql 커넥터 제공 라이브러리
- mariadb-java-client : 표준 jdbc api를 사용하여 java로 개발된 애플리케이션을 MariaDB 데이터베이스에 연결해주는 라이브러리
- HikariCP : 데이터베이스와 커넥션 풀 관리 제공 라이브러리
- mybatis : sql 명령어와 자바 객체를 매핑해주는 기능 제공 라이브러리
- mybatis-spring : mybatis와 spring을 이어주는 라이브러리
<!-- DB -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>2.6.2</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.3</version>
</dependency>
10. POM Setting - Util
- jackson-databind : java object > json 또는 json > java object로 변환을 제공하는 라이브러리
- jackson-dataformat-xml : json을 xml 기반으로 변환을 제공하는 라이브러리
<!-- Util -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${fasterxml.jackson-version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>${fasterxml.jackson-version}</version>
</dependency>
11. POM Setting - Security
- spring security를 사용하기 위한 라이브러리
<!-- Security -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>${org.springframework.security-version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${org.springframework.security-version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${org.springframework.security-version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>${org.springframework.security-version}</version>
</dependency>
12. POM Setting - Test
- junit : 테스트 제공 라이브러리
<!-- Test -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
13. POM Setting - <bulid>
- build > plugins > plugin > maven-complier-plugin > configuration에서 source버전 1.8, target버전 1.8로 변경
14. Version Setting
- 프로젝트 우클릭 > properties > projectFacets > dynamic web module > 3.1 ver
> java > 1.8 ver
- JRE System Libaray 우클릭 > Build Path > configure build path > JRE System Library > 1.8 ver