공부/그룹 스터디

[3회차 03] Spring JDBC 설정

junani0v0 2024. 4. 17. 18:10

Spring Jdbc로 프로젝트를 만들어 MyBatis를 왜 사용하는지 알아보자

일단 전과 같이 프로젝트를 생성하고 기본세팅해주세요

 

Tip.

혹시 자꾸 java 버전이 바뀐다면 상단 Window -> Preperence를 누른후 Java -> Installed JREs 의 기본자바를 성정해주세요

또는 Server -> Runtime Environemnts 에서 Tomcat을 선택후 Edit 클릭, JRE 버전이 제대로 설정되었는지 확인

 

< Spring JDBC 라이브러리 추가 >

이제 프로젝트 기본설정을 끝냈으면 pom.xml에 아래 라이브러리를 https://mvnrepository.com 에서 최신버전을 찾아 추가하고 maven update까지 해주세요

  • spring-beans
  • spring-jdbc
  • mysql-connector
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
		<dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-beans</artifactId>
		    <version>5.3.34</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
		<dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-jdbc</artifactId>
		    <version>5.3.34</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
		<dependency>
		    <groupId>com.mysql</groupId>
		    <artifactId>mysql-connector-j</artifactId>
		    <version>8.3.0</version>
		</dependency>

그러고 이제 새로만든 프로젝트를 Tomcat에 추가하고 실행해봅니다

현재 html등 다른 파일이 없으니 실행중 에러가 없는지만 검토합니다

Spring을 실행했는데 모든정보가 아무것도 없을 껍니다 그렇기에 우리는 로그 설정을 해보겠습니다

 

< 로그 라이브러리 추가 > 

log설정 라이브러리 아래 3가지를  https://mvnrepository.com 에서 최신버전을 받아 pom.xml에 추가 & maven update

  • logback-classic
  • logback-core
  • slf4j-api
		<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
		<dependency>
		    <groupId>ch.qos.logback</groupId>
		    <artifactId>logback-classic</artifactId>
		    <version>1.5.5</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-core -->
		<dependency>
		    <groupId>ch.qos.logback</groupId>
		    <artifactId>logback-core</artifactId>
		    <version>1.5.5</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
		<dependency>
		    <groupId>org.slf4j</groupId>
		    <artifactId>slf4j-api</artifactId>
		    <version>2.0.13</version>
		</dependency>

여기서 logback-classic에 test를 빼주세요 위에 코드는 이미 제거했지만 최신버전을 받는다면 있을껍니다 이게 들어가있으면 실행이 안됩니다

 

그리고 초기설정에 만든 src/main/resources 폴어에 logback.xml을 생성해 아래코드를 붙여넣습니다

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">

	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
   			<pattern>[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %logger{35} - %msg%n</pattern>
			<charset>UTF-8</charset>
		</encoder>
	</appender>
	
	<logger name="org.springframework" level="DEBUG" additivity="true"/>

  <root level="DEBUG">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

이제 서버를 스타트하면 아래처럼 나올것입니다

스프링을 실행시키면 스프링이 어떻게 동작하는지 로그로 알 수 있습니다

처음 스프링을 시작하면 Initializing Servlet을 보게 되는데요 실행할때 servlet밖에 없어서 그렇습니다

Loaded 30 bean ....은 WEB-INF/pf-servlet.xml에서 정의한것 중 bean을 30개를 가져왔다는 말입니다

 

그리고 아래보면 Creating shared instance of singleton bean이라고 되어있는데요

스프링은 무조건 singleton bean입니다

이게 위에 30개 가져왔다고하니 쭉 개수를 확인해보면 30개일껍니다

에러가 발생하면 이 로그를 잘보면 해결할 수 있습니다

(빈을 못찾겠다하면 우리가 생성하려는 빈을 로그에서 Creating shared instance of singleton bean 되었는지 확인해보면 된다)

 

그리고 logback.xml에 패턴을 넣어줘서 로그 앞 날짜와 시간이 yyyy-MM-dd HH:mm:ss 형식으로 나오는걸 볼 수 있습니다 기본로그는 날짜가 나오지않아 보기 힘듦니다

 

근데 여기서 우리가 넣은 logback.xml을 어떻게 알고 넘어올까요?(힌트 Build path)

빌드패스가 된다음은 어디인가? 바로 클래스 패스입니다

우리가 logback.xml을 src/main/resources(빌드패스) 에 넣었는데요 컴파일하면 xml은 컴파일할께 없어 그대로 클래스패스로 복사가됩니다. 그리고 logback을 포함한 대부분의 라이브러리는 설정파일을 클래스패스부터 찾습니다

(resources에 넣으면 클래스패스로 가니 logback.xml을 거기에 넣는것 입니다 )

빌드패스랑 클래스패스는 붙어다닌다고 보시면 됩니다

 

Tip.

만약 @Controller로 정의한게 있다면 실행시 Creating shared instance of singleton bean 되었다고 콘솔에서 확인할 수 있습니다(이렇게 나중에 Controller를 만들고 빈이 없다하면 로그를 보면된다)