본문 바로가기
스프링

[spring] IntelliJ 스프링 #2 DB.연결(mariaDB)

by 멋진 개구리 2023. 10. 12.
반응형

[spring] IntelliJ 스프링(maven) #1 개발환경 만들기 (tistory.com)

 

[spring] IntelliJ 스프링(maven) #1 개발환경 만들기

IntelliJ에서 maven 스프링 프레임워크 개발 환경 셋팅 IDEA는 2023.2.1 버전으로 진행하였습니다. 1. Project 생성하기 위 사진과 같이 (1) 제너레이터에서 Maven 원형을 선택하고 (2) 프로젝트명을 MySpring 이

awesomefrog.tistory.com

#1에서 스프링 개발 환경을 만들었고
#2에서는 DB연결을 해보겠습니다~

1. pom.xml에 의존성 주입을 한다

사용할 DB는 mariaDB이고 설치 방법은 [vue & Spring Boot] 연동하여 게시판 만들기 #1 스프링부트셋팅 feat. mariadb (tistory.com) 여기서 간단하게 설명되어있으니 참조하여 설치하시면 됩니다. 설치시 id와 pass워드는 메모해주세여~

아래 소스를 pom.xml에 의존성 주입을 합니다. 

<!--mysql -->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.17</version>
</dependency>

<!--mybatis-->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.5.2</version>
</dependency>

<!--mybatis-spring-->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-spring</artifactId>
  <version>2.0.2</version>
</dependency>

<!--spring-jdbc-->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>${org.springframework-version}</version>
</dependency>

 

하고나서 프로젝트 스트럭처 Ctrl + Alt + Shift + S 버튼을 눌러서 아키팩트로 들어가 라이브러리를 추가해줍니다

위처럼 추가가 되었습니다.

2. #1에서 rootContext.xml을 만들었었는데 이걸 applicationContext.xml 로 변경해주고 아래 소스를 넣어줍니다~

<?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.xsd">

<!--추가된 부분-->
<context:component-scan base-package="com.test.sample">
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!--//추가된 부분-->
</beans>
<context:component-scan base-package="com.test.sample">
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

윗부분이 추가가 되었는데,

위 코드는 com.test.sample 이라는 패키지 폴더 하위 controller 어노테이션을 제외한 모든 어노테이션을 스캔하겠다는 뜻입니다. 쉽게말해 @service 나 @Repository 같은 service 파일과 DAO 파일 등을 스캔한다는 뜻 이다.

3. datasourceContext.xml 파일

applicationContext.xml와 같은 경로에 datasourceContext.xml 파일을만들고

<?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:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd">

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false&amp;serverTimezone=UTC"/>
        <property name="username" value="root"/>
        <property name="password" value="root1234"/>
    </bean>

    <bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!-- <property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml"/> -->
    </bean>

    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
        <constructor-arg name="sqlSessionFactory" ref="SqlSessionFactory"/>
    </bean>
</beans>

소스를 기입한다.
<bean id="dataSource" 부분이 있는데 여기 프로퍼티를 통해 DB정보를 기입하여 DB에 접속을 한다. 
localhost:3306/test 이부분은 test라는 DB에 접속을 하려고하는데

디비에서 create database test; sql을 입력하여 db를 만들어주면 된다.

<!-- <property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml"/> -->

중간에 주석이 된 부분이 있는데, 이건 다음시간에 해볼게요~

 

4. Junit으로 DB연결 확인하기

db가 연결이 되었는지 확인 하려고하는데 여기에서 junit으로 간편하게 테스트 코드를 만들어 접속을 확인 하면된다.


`JUnit은 자바 프로그래밍 언어 용 유닛 테스트 프레임워크입니다. 테스트 주도 개발 면에서 중요하며, XUnit 이라는 이름의 유닛 테스트 프레임워크 계열의 하나입니다. JUnit은 컴파일 타임에 JAR 로서 링크되며, 반복 가능한 테스트를 작성하는 데 사용됩니다. 개발자가 디버깅 없이 System.out을 사용하여 실행할 수 있는 외부 테스트 프로그램(케이스)을 작성할 수 있습니다. JUnit은 프로그램 테스트에 걸리는 시간을 관리하는 데 도움이 되며 오픈 소스입니다.`

여기에서도 의존성 주입을 해줍니다.


<!--junit-->
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.12</version>
  <scope>test</scope>
</dependency>

<!--spring-test-->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-test</artifactId>
  <version>${org.springframework-version}</version>
</dependency>

소스를 기입해주고 
프로젝트 구조로 들어가 

라이브러리를 추가해줍니다.

위 그림과 같은 경로에 DBConnectionTest 클래스를 만들어주고

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.sql.DataSource;
import java.sql.Connection;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring/*Context.xml"})
public class DBConnectionTest {

    @Autowired
    private DataSource ds;

    @Test
    public void testConnection(){
        try(Connection con = ds.getConnection()){
            System.out.println(("MariaDB 연결 성공 : " + con));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

소스를 기입해준다. 

위 그림과 같이 테스트 코드를 실행하면

위 처럼 나오면 성공~!

 

다음은 기본 mapper설정을 해보도록하겠습니다.

반응형

댓글