스프링 프로젝트 생성 및 준비하기🤔
Spring Legacy Project의 생성
pom.xml에서 스프링 버전 변경
(아래는 한번에 추가된다.)
spring-test, spring-jdbc, spring-tx 추가
junit버전 변경
Servlet 버전 변경
HikariCP, MyBatis, mybatis-spring, Log4jdbc 추가
JDBC드라이버 프로젝트 내 추가
기타 Lombok의 설정 등
< 목 차 >
1. Spring Legacy Project의 생성
2. pom.xml에서 스프링 버전 변경
3. log4jdbc.log4j2.properties와 logback.xml 파일 추가
4. root-context.xml 내용 추가 및 수정
5. servlet-context.xml 내용 추가
6. web.xml 내용 추가
(기타)
7. 톰캣 서버 변경 및 실행이유
8. 구조 만들기
1. Spring Legacy Project 생성
(1) File ➡ New ➡ Spring Legacy Project
(2) Project name 설정 ➡ Templates은 Spring MVC Project 선택 ➡ Next
(3) com.demo.controller 입력이 정석 :)
✨ 2. pom.xml (스프링 버전 변경, 라이브러리 추가)
(1) pom.xml 파일 위치
프로젝트 파일 ➡ 맨 밑의 pom.xml
(2) spring version 수정
11~14라인의 버전 수정
맨 밑쪽에 있는 <configuration> 내 <source>와 <target>부분 버전 수정
(3) 롬복 로그 사용시 주석처리 부분
<scope>runtime</scope>
(4) Servlet 버전변경
기존 내용, 수정 내용
(5) 라이브러리 추가 내용
아래 내용을 위 servlet 아래에 추가한다.
<!-- 1)Test 버전변경 4.7 -> 4.12 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<!-- 아래 주석처리 -->
<!-- <scope>test</scope> -->
</dependency>
<!-- 추가 -->
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<!-- 객체를 JSON으로 변환하는 기능을 제공. -->
<!-- 스프링의 매핑주소에 의해 메서드가 호출되면, 기본동작은 JSP파일을 진행하게 된다.(기본) -->
<!-- 메서드의 리턴값이 객체일 경우는 클라이언트에게 JSON으로 변환하여 보내야 할 때, 아래 라이브러리 사용-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.4.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
<!-- 오라클 데이타베이스 드라이버 -->
<!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8 -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>21.5.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->
<!-- Connection Pool기능지원 -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.7.4</version>
</dependency>
<!-- mybatis를 사용시 sql구문에 대한 상세로그를 출력. -->
<!-- 1)log4jdbc.log4j2.properties 2)logback.xml 2개의 파일을 src/main/resource 폴더에 복사 -->
<!-- 로그 level제어설정 : log4j.xml -->
<!-- root-context.xml파일에 DB연결정보를 변경 -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
<version>1.16</version>
</dependency>
<!-- 2)Test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- mybatis 라이브러리 -->
<!-- 특징? JDBC Wrapper 로 JDBC보다 더 편하게 DB작업을 수행할수 있게 해주는 모듈 -->
<!-- MyBatis에서 핵심객체는 SQLSession, SQLSessionFactory -->
<!-- JSP에서 DB작업? JDBC라이브러리(java.sql 패키지 Connection, PrepareStatement, ResutlSet -->
<!-- xml or Annotation를 이용한 SQL 사용 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- 2)https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<!-- 스프링과 마이바티스를 연동해주는 모듈 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<!-- 3)https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<!-- 자바의 jdbc를 스프링버전으로 만든 의미. -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<!-- 4)https://mvnrepository.com/artifact/org.springframework/spring-tx -->
<!-- 트랜잭션 기능제공 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework-version}</version>
</dependency>
2-2. 라이브러리 추가 및 스프링 버전 업데이트 확인하기
(1) 해당 프로젝트 우클릭 ➡ Maven ➡ Update Project 클릭
(2) 업데이트 전엔 1.6 ➡ 업데이트 후 1.8 변경된 것을 확인할 수 있다 😊
3. log4jdbc.log4j2.properties와 logback.xml 파일 추가
(1) 아래 경로에 log4jdbc.log4j2.properties와 logback.xml 파일 가져오기
(ex01에서 복붙)
(2) log4j.xml 파일에 연동내용 추가하기
<!-- https://freehoon.tistory.com/113 -->
<!-- 추가 -->
<!-- sql log -->
<logger name="jdbc.adult">
<level value="warn" />
</logger>
<!-- resultset을 포함한 모든 JDBc호출정보를 로그로 기록. 매우 많은 양의 로그가 발생 -->
<logger name="jdbc.resultset">
<level value="warn" />
</logger>
<!-- 열려있는 모든 번호와 연결수립, 해제 이벤트를 기록. -->
<!-- 즉, 연결문제를 찾아내는데 매우 유용.(Connection Pool설정) -->
<logger name="jdbc.connection">
<level value="warn" />
</logger>
<logger name="jdbc.resultsettable">
<level value="info" />
</logger>
4. root-context.xml 내용 추가 및 수정하기
(1) root-context.xml 파일 경로
(2) 아래 내용으로 수정하기
(리눅스 서버 실제반영 부분 기억해두기! 실무는 이걸로 쓴다! 밑에 것 지우고)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<!-- 데이타베이스 연동에 필요한 bean설정 -->
<!-- 1) HicariCP 라이브러리: Connection Pool기능목적 -->
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<!-- Setter메소드 -->
<!-- 리눅스 서버 실제반영 -->
<!--
<property name="driverClassName" value="oracle.jdbc.OracleDriver" />
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:xe" />
-->
<!-- 개발시 SQL로그출력을 참조하기 위하여 -->
<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy" />
<property name="jdbcUrl" value="jdbc:log4jdbc:oracle:thin:@localhost:1521:xe" />
<property name="username" value="ora_user" />
<property name="password" value="1234" />
</bean>
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<!-- 생성자메소드 -->
<constructor-arg ref="hikariConfig" />
</bean>
<!-- Root Context: defines shared resources visible to all other web components -->
</beans>
5. web.xml 내용 추가
(1) web.xml 파일 경로
(2) web.xml 상단 버전 수정
기존 내용, 수정 내용
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
(3) web.xml 한글깨짐방지 복사
<!-- 한글깨짐방지. -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
6. 톰캣 서버 변경 (변경 시 톰캣 멈춘 다음에 진행하자!)
(1) Servers 탭의 Tomcat 우클릭 ➡ Add and Remove
(2) Configured 란에는 ex02만 존재하도록 한다.
(3) 위 설정 후 Tomcat 더블클릭 ➡ 창의 Modules(라이언) ➡ /controller 내용 수정(Edit)
(4) Path를 /만 남기고 삭제 후 OK
✨ 톰캣 왜 자꾸 실행하나요??🤔
라이브러리 추가하는 설정한 후 톰캣을 시작하라!
그러면 톰캣이 스프링 프로젝트의 기본적인 설정정보를 읽어들여서 이상유무를 체크할 수 있다.
* 아래 빨간박스 메세지가 나오면 정상적이다.
7. 구조 만들기(가장 먼저 만들어놓아도 상관없다)
(1) src/main/java에 패키지 만들기
domain, mapper, service 패키지 추가하기
(controller는 생성 시 자동으로 생성되어 있음 주의)
* mapper 폴더 미리 생성하기
src/main/resources 폴더 내 3개 파일 만들기(com-demo-mapper)
(2) root-context.xml에 mybatis 관련 코드 추가하기
mapper 생성 후 mybatis에서 사용할 코드 가져오기
<!-- 2)mybatis에서 제공하는 클래스를 bean설정 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- mybatis에서 사용할 xml mapper 파일의 위치를 설정 -->
<!-- src/main/resources폴더에 com/demo/mapper 폴더생성하고, com.demo.mapper패키지 생성. 그 위치를 아래구문으로 설정. -->
<mybatis-spring:scan base-package="com.demo.mapper"/>
*패키지 이름보고 mybatis 설정했다고 보면 된다! 😉
🕵️♂️ 톰캣 콘솔창에 Welcome home! 뜨는 이유?
HomeController의 이상이 없으면 출력되는 부분이 콘솔창에 나오면 잘 해결된 것이다!
(3) root-context.xml에서 service 추가
(xmlns:context위에 있는 것을 아래 추가)
<context:component-scan base-package="com.demo.service"></context:component-scan>
이렇게되면 구조 패키지 중 domain 외 다른 정보들은 다 들어갔다! 야호 :)
* 절대적인 순서는 아니나, 여러번 하다보면 눈에 들어올 것이다 :) 😉
'⚙ Setting' 카테고리의 다른 글
[Postman] 포스트맨 설치 및 다운로드 / 테스트 돌려보기 (0) | 2022.11.15 |
---|---|
[Eclipse ➡ VSC] Visual Studio Code 프로그램으로 파일열기 (0) | 2022.11.15 |
[Spring 준비] Eclipse에 Spring 준비하기 (0) | 2022.11.02 |
[Chrome 창 띄우기] Eclipse에서 크롬으로 보기 (0) | 2022.10.31 |
[크롬 캐시 삭제] 크롬 캐시 삭제 설정하기 (0) | 2022.10.28 |