본문 바로가기
Spring

Spring 시작

by 요리하다그만둠 2022. 7. 25.

먼저 DB는 Oracle로 진행중입니다.

전자정부 프레임워크 사용중입니다.

 

실습관련해서 DB user는 sts로 만들어 두었고 실습용으로 단순하게 테이블을 만들어 보았습니다.

CREATE TABLE users(
ID VARCHAR2(8) PRIMARY KEY,
PASSWORD VARCHAR2(8),
NAME VARCHAR2(20), 
ROLE VARCHAR2(5)
);

INSERT INTO USERS VALUES('test', 'test1234', '관리자', 'Admin');
INSERT INTO USERS VALUES('user1', 'user1', '홍길동', 'User');

CREATE TABLE BOARD (
SEQ NUMBER(5) PRIMARY KEY,
TITLE VARCHAR2(200),
WRITER VARCHAR2(20),
CONTENT VARCHAR2(2000),
REGDATE DATE DEFAULT SYSDATE,
CNT NUMBER(5) DEFAULT 0
);
INSERT INTO BOARD(SEQ, TITLE, WRITER, CONTENT) VALUES(1, '가입인사', '관리자', '잘부탁드립니다...');

 

프로젝트 생성

STS를 설치했으면 이제 앞으로 진행할 실습을 위해 스프링 기반의 웹 프로젝트를 생성해보겠습니다.

file -> new 에서 Spring Legacy Project를 선택

 

원하는 명칭 사용하시고 Spring MVC Project를 선택

빨간줄을 보면 이 형식으로 생성하라고 나와있습니다.

프로젝트 생성확인 할수 있습니다.

이제 프로젝트를 생성해보면 JRE 버전도 맞지않고 서버라이브러리도 등록이 되어있지 않는걸 확인할수있는데 프로젝트에서 properties에 들어갑니다.

들어가서 Project Facets에 들어가서 자바 버전을 1.8로 해주었습니다.(전자정부 프레임워크 3.9버전 사용중이라서)

그리고 런타임을 눌러줍니다.

서버 체크해주고 Apply

프로젝트를 생성하면 스프링 기반의 웹 프로젝트 수행에 필요한 기본 설정 파일들과 소스들이 자동으로 제공됩니다. 이렇게 제공된 설정 파일들을 정리해야 앞으로 진행할 실습이 의미가 있습니다.

 

우선 src/main/resources에 들어가서 소스 폴더에서 log4j.xml 파일을 제외한 나머지는 (패키지, 폴더, 파일) 는 모두 삭제 합니다. 그리고 log4j.xml 파일의 이름을 log4j2.xml로 변경합니다. 파일 이름은 파일에 마우스 오른쪽 버튼을 클릭한 다음 

[Refactor] -> [Rename]을 선택해 변경할 수 있습니다.

log4j2.xml 내용 수정

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">

	<!-- 
	
	######## log4j pattern(패턴) ##########
	 
	%p : 로그 레벨(debug, info, warn, error, fatal)의 priority(디버깅시 출력 우선권)가 출력됨.
	%m : 로그 내용이 출력.
	%d : 로그 이벤트가 발생한 시간을 기록.
	  ex) %d{HH:mm:ss, SSS}, %d{yyyy MMM dd HH:mm:ss, SSS}
	  : Java의 SimpleDateFormat의 클래스에 따른 포맷(format) 적용
	  
		- %d{ABSOLUTE}
		- %d{DATE}
		- %d{ISO8601}

	%t : 로그 이벤트가 발생된 스레드(thread)명을 출력.
	%% : % 표시 출력.
	%n : 플랫폼 종속적인 개행문자(줄바꿈)가 출력.
	%c : 카테고리(category)를 표시.
	 ex) 카테고리가 a.b.c 처럼 되어있다면 %c{2}는 b.c가 출력.
	 
	%C : 클래스명(class)을 표시. 
	 ex) 만약 클래스의 패키지 구조가 com.javateam.project.DemoClass 라고 한다면  
	     %C{2}는 project.DemoClass 가 출력됨.
	 
	%F : 로그가 발생한 프로그램 파일(File)명.
	%l : 로그가 발생한 호출자(caller)의 정보.
	%L : 로그가 발생한 호출자(caller)의 라인수(line)를 나타냅니다
	%M : 로그가 발생한 메서드(method) 이름을 나타냅니다.
	%r : 프로그램 시작 이후 부터 로그가 발생한 시점의 시간(milliseconds : 밀리초)
	%x : 로그가 발생한 스레드(thread)와 관련된 NDC(nested diagnostic context)를 출력.
	%X : 로그가 발생한 스레드(thread)와 관련된 MDC(mapped diagnostic context)를 출력. %X{key} 형태.
	
	참고) NDC & MDC : https://cwiki.apache.org/confluence/display/LOGGINGLOG4J/NDCvsMDC
	http://egloos.zum.com/charmpa/v/2543451
	
	- 공백(whitespace) 패딩 관련
	%5p : 우측 정렬로 로그 레벨을 남김. 로그 레벨이 5글자가 안되면 왼쪽에 공백을 추가하여 5글자 맞춤.
	%-5p : 좌측 정렬. 

	-->
	
	<Properties>
	
		<!-- <Property name="LOG_PATH" value="E:\lsh\log\spring\test" /> -->
		<Property name="LOG_PATH" value="로그 경로" />
		
		<Property name="layoutPattern">
			%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%C] [%t] -- %m%n
		</Property>
	</Properties>
	
	<Appenders>
	
		<Console name="ConsoleAppender" target="SYSTEM_OUT">
			<PatternLayout pattern="${layoutPattern}" />
		</Console>
		
		<RollingFile name="FileAppender" 
		 			 fileName="${LOG_PATH}/log4j2_test.log" 
		 			 filePattern="${LOG_PATH}/log4j2_test_%d{yyyy-MM-dd}_%i.log">
		 			  
            <PatternLayout pattern="${layoutPattern}"/>
            
            <Policies>
                <SizeBasedTriggeringPolicy size="50KB"/>
                <TimeBasedTriggeringPolicy interval="1"/>
            </Policies>
            
            <DefaultRolloverStrategy max="10" fileIndex="min"/>
            
        </RollingFile>
        
	</Appenders>
	
		
	<Loggers>
	
		<Logger name="com.javateam.프로젝트 contextPath.test" 
				level="INFO" 
				additivity="false">
			<AppenderRef ref="ConsoleAppender"/> 
			<AppenderRef ref="FileAppender"/>
		</Logger>
				
		<Root level="INFO" additivity="false">
			<AppenderRef ref="ConsoleAppender" />
			<AppenderRef ref="FileAppender"/>
		</Root>
		
	</Loggers>
	
</Configuration>

나중에 Library => Maven Dependencies 들어가보면 스프링 라이브러리 버전이 일괄 변경된 것을 확인할 수 있습니다.

'Spring' 카테고리의 다른 글

제어의 역행(역전) : IoC(DI)  (0) 2022.07.25
STS IoC컨테이너  (0) 2022.07.25
프레임워크 개념  (0) 2022.07.25
sts 배경화면 색 바꾸기  (0) 2022.07.22
sts설치하기  (0) 2022.07.21