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를 만들고 빈이 없다하면 로그를 보면된다)
'공부 > 그룹 스터디' 카테고리의 다른 글
[3회차 05] DB table에 값 넣기, 수동 bean 등록 (0) | 2024.04.18 |
---|---|
[3회차 04] jsp값 Controller로 넘기기 (0) | 2024.04.17 |
[3회차 02] DBeaver 설치 & 설정 (0) | 2024.04.17 |
[3회차 01] Docker 간단 사용법 (0) | 2024.04.16 |
[1회차 0] 초기 세팅 (0) | 2024.04.16 |