Spring Web - JDBC, MySQL DB 연동 - 환경 설정 (1/2)

반응형

 

스프링 프로젝트 설정

pom.xml 설정

  • pom.xml - dependencies 부분에 아래의 코드를 입력하여 의존성 추가
    • spring-webmvc : mvc 디자인 패턴 관련
    • mysql-connector-java : mysql 연결 관련
    • spring-jdbc : 스프링에서 자바로 데이터베이스 제어
    • commons-dbcp : 데이터베이스의 다중 접속, 다중 처리
<!-- pom.xml -->
<dependencies>
	<!-- Spring Web MVC -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-webmvc</artifactId>
	    <version>4.1.7.RELEASE</version>
	</dependency>
    
	<!-- MySQL -->
	<dependency>
	    <groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId>
	    <version>8.0.31</version>
	</dependency>
	
	<!-- Spring JDBC -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-jdbc</artifactId>
	    <version>5.3.18</version>
	</dependency>

	<!--  DataSource -->
	<dependency>
	    <groupId>commons-dbcp</groupId>
	    <artifactId>commons-dbcp</artifactId>
	    <version>1.4</version>
	</dependency>
</dependencies>

DataSource 설정

root-context.xml 설정

  • (Package Explorer) src/main/resources 우클릭 - New - Other

 

  • XML File - Next

 

  • File name : 'root-context.xml' - Finish

 

  • 생성한 root-context.xml 파일에 아래의 코드 입력
    • context:property-placeholder : 지정한 경로의 환경설정 파일 호출
    • ${호출한 환경설정 파일의 변수} : 다른 properties에서 지정한 변수의 값을 호출
      • 이는 직접적인 정보 노출을 방지하기 위하여 권장
      • 원한다면 그대로 하드코딩해도 되지만 권장하지 않음
<?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:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="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.2.xsd">

<!-- 설정 불러오기 -->
<context:property-placeholder location="classpath:config/jdbcConfig.properties"/>

<!-- DataSource 설정 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
	<property name="driverClassName" value="${jdbc.driver}"/>
	<property name="url" value="${jdbc.url}"/>
	<property name="username" value="${jdbc.username}"/>
	<property name="password" value="${jdbc.password}"/>
</bean>

<!-- DataSource mysql db 예시
<bean id ="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://주소:포트/데이터베이스?serverTimezone=Asia/Seoul"/>
    <property name="username" value="아이디"/>
    <property name="password" value="비밀번호"/>
-->

</beans>

환경 설정 파일 생성

환경 설정 파일을 굳이 생성하는 이유?

보안의 이유도 있지만 모든 설정 정보를 한 눈에 보기 쉽게 하기 위함도 있음

  • src/main/resources 우클릭 - New - Folder

 

  • root-context의 <context:property-placeholder location>에서 지정한 경로 폴더 생성
    classpath:config/jdbcConfig.properties
  • config 폴더 생성

 

  • 지정한 경로의 파일 생성
    classpath:config/jdbcConfig.properties
  • config 폴더 우클릭 - New - File

 

  • File name : 'jdbcConfig.properties' - Finish

 

  • jdbcConfig.properties 파일에 아래의 코드를 붙여넣어 환경에 맞는 정보 입력
    • jdbc.url
      • jdbc:mysql://데이터베이스주소:포트/데이터베이스명
    • jdbc.username
      • jdbc.url에서 설정한 데이터베이스의 사용자 이름
    • jdbc.password
      • jdbc.url에서 설정한 데이터베이스의 사용자 비밀번호
  • 참고 : 당연히 사용자를 새로 만드는 것이 아닌, 해당 데이터베이스에서 접속, 제어가 가능한 사용자여야 함
<!-- jdbcConfig.properties -->
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://URL:3306/DATABASE?serverTimezone=Asia/Seoul
jdbc.username= USERNAME
jdbc.password= PASSWORD


MySQL Workbench 데이터베이스 설정

데이터베이스(스키마) 생성

 

 

  • 스프링에서 설정한 'jdbcConfig.properties'd의 jdbc.url 정보의 데이터베이스명과 동일하게 생성
    • 개인의 환경에 따라 다르게 설정 할 수 있음. 포스팅에서는 testdb로 설정.


테이블 생성

  • 생성된 데이터베이스의 Tables 우클릭 - Create Table

 

  • 간단한 테스트를 위한 테이블의 컬럼 설계 및 생성
    • 컬럼 설계
      • id : 인덱스
      • name : 사용자 이름
      • address : 사용자의 거주 지역
    • 테이블 생성 (Apply)

 

  • 테이블 생성 확인

반응형