본문 바로가기
dev/Spring-boot

[SpringBoot] 프로젝트 생성 및 DB연결

by dev_Step 2022. 6. 26.

 

>> 프로젝트를 생성해 보자

>> Create new Spring Starter Project 를 눌러서 생성한다.

>> 생성 간에 여러 요소를 설정할 수 있다.

>> Name : 프로젝트 이름을 의미

>> Package : 기본 패키지

>> type: Maven Project // Gradle 프로젝트를 선택할 수 있다.

>> Java Version을 선택할 수 있따.

>> 그후에 프로젝트를 생성하면서 여러 Dependency 를 생성할 수 있따.  추가하고자 하는 Dependency를 눌러서 추가해주면된다.

 

 

>> Finish를 누르면 생성되는 프로젝트의 구조이다

>> 주의 깊게 봐야할것은 아래의 두가지이다.

>> src/main/java 하위의 DemoApplication.java 

>>  src/main/resources 하위의 application.properties 

 

1.  DemoApplication.java 

 >> 해당 클래스에 들어가면 @SpringBootApplication 이라는 어노테이션이 있는데.

 >> 해당 어노테이션이 들어가보면

 >>  @ComponentScan 어노테이션이 추가되어 있는 것을 확인할 수 있다.

 >> 이것은 해당 SpringBoot 프로젝트가 실행될때 @SpringBootApplication이 포함되어 있는 (즉 main함수가 있는) 패키지에 @Service , @Contoller, @Repository 등의 어노테이션이 있을 경우 자동으로 Bean으로 등록을 해준다는 것을 의미한다. 즉 DemoApplication.java가 포함되어 있는 com.starter.boot 하위의 폴더대상으로 ComponentScan이 진행된다.

 

 

 

 

2. application.properties 

>> 두번쨰로 application.properties  는 처음 열어보면 비어있다.

>> application.properties는 스프링부트가 어플리케이션을 구동할 때 자동으로 로딩하는 파일입니다.

>> @Value("${key}") 등으로 controller 등의 JAVA 파일에서 application.properties에서 설정한 값을 사용할 수 있다.

 

>> 또한 해당 파일안에 DB연결등의 설정을 실시한다.

 

 

>> DB 연결시키기

>> 3,4 줄은 log4jdbc 사용하지 않고 DB를 연결시킬때 사용하는 3,4 번 라인을 사용하고,

>> log4jdbc 를 사용할경우는 6,7번을 사용한다.

설정을 추가하면 

>> mybatis config 설정을 해줄수 있다.

>> mybatis.config-location: classpath:mybatis-config.xml 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	
</configuration>

 

 

# database
#spring.datasource.driver-class-name: com.mysql.cj.jdbc.Driver
#spring.datasource.url: jdbc:mysql://localhost:3306/DB명?characterEncoding=utf8

spring.datasource.driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.url: jdbc:log4jdbc:mysql://localhost:3306/DB명?characterEncoding=utf8
spring.datasource.username: id
spring.datasource.password : pwd

# mybatis
mybatis.mapper-locations: classpath:mybatis/*.xml

 

>> 또한 log4jdbc 설정 파일을만들어준다

<log4jdbc.log4j2.properties>
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0
log4jdbc.drivers=com.mysql.cj.jdbc.Driver
log4jdbc.auto.load.popular.drivers=false



<logback-spring.xml>
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
	<!-- Appenders -->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<Pattern>%d %5p [%c] %m%n</Pattern>
		</encoder>   
	</appender>

	<appender name="console-infolog" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<Pattern>%d %5p %m%n</Pattern>
		</encoder>   
	</appender>

	<!-- 로거 -->
	<logger name="jdbc.sqlonly" level="INFO" appender-ref="console-infolog"/>
	<logger name="jdbc.resultsettable" level="INFO" appender-ref="console-infolog"/>
	<!-- 루트 로거 -->
    <root level="off">
        <appender-ref ref="console"/>
    </root>
</configuration>

 

>> Mybatis 연결은 잘됬는데 계속 log4JDBC 연결이 안되서 고초를 겪었는데 진짜 간단한 방법으로 해결이 되었다.

 -- 보통 Dependency를 추가하거나, log4jdbc~.properties 파일에서 log4jdbc.driver 설정을 해주면된다고 했는데 내가 해결한 방법은..

 

-- 내부 톰캣 서버가 실행된 상태에서 log4jdbc 설정을 했었는데, 서버를 완전히 종료시켰다가 다시 실행하니까 정상적으로 적용이 되었다. restart가 아닌 종료 후에 start 했다.

-- 이게 맞는지 모르겠지만 서버가 실행중에 log4jdbc 설정을 할경우 적용이 안되고, 서버를 완전히 종료했다가 실행해야 적용이 되는것 같았다.

 

 

 

 

 

====================================================================================

Package 상태

 

>> pom.xml 설정 파일 Dependency 들

<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.2.2</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		
		<dependency>
			<groupId>org.bgee.log4jdbc-log4j2</groupId>
			<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
			<version>1.16</version>
		</dependency>
		
	</dependencies>