Dorothy_YANG
With Dorothy
Dorothy_YANG
전체 방문자
오늘
어제
  • 분류 전체보기 (279)
    • Hi, I'm Dorothy 🕵️‍♂️ (21)
      • Slowly but Surely (18)
      • IT certifications (3)
    • 🤯TIL (80)
      • HTML & CSS (2)
      • Javascript & jQuery (13)
      • React (13)
      • C언어 (1)
      • JAVA (22)
      • Python (2)
      • Oracle SQL (10)
      • My SQL (5)
      • Spring (12)
    • 💻Programmers (17)
    • 🏫 Open API_JAVA (101)
    • 🌎 Project (10)
      • Shopping (10)
    • 💥 Error (24)
    • ⚙ Setting (23)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • googlecolaboratory
  • AllArgsConstructor
  • 콜라보레이토리
  • sql기간
  • 비쥬얼스튜디오코드
  • Database
  • 기간설정
  • Eclipse
  • 이것이자바다
  • 백준
  • 오류해결
  • CSS
  • Javascript
  • SQL
  • java
  • 시작일종료일
  • HTML
  • 파이썬온라인
  • SQLD합격후기
  • 독학후기
  • 연습문제
  • 창초기화
  • 서버등록
  • spring
  • 노마드코더
  • SQLD합격
  • 기간쿼리
  • oracle
  • colaboratory
  • 코딩앙마

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Dorothy_YANG

With Dorothy

[Spring 프로젝트] 스프링 프로젝트 생성 및 준비(라이브러리 추가)
⚙ Setting

[Spring 프로젝트] 스프링 프로젝트 생성 및 준비(라이브러리 추가)

2022. 11. 8. 22:35
728x90

스프링 프로젝트 생성 및 준비하기🤔

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 외 다른 정보들은 다 들어갔다! 야호 :)

 

 


* 절대적인 순서는 아니나, 여러번 하다보면 눈에 들어올 것이다 :) 😉

 

 

728x90
저작자표시 (새창열림)

'⚙ 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
    '⚙ Setting' 카테고리의 다른 글
    • [Postman] 포스트맨 설치 및 다운로드 / 테스트 돌려보기
    • [Eclipse ➡ VSC] Visual Studio Code 프로그램으로 파일열기
    • [Spring 준비] Eclipse에 Spring 준비하기
    • [Chrome 창 띄우기] Eclipse에서 크롬으로 보기
    Dorothy_YANG
    Dorothy_YANG
    Slowly but Surely, 비전공 문과생의 개발공부

    티스토리툴바