본문 바로가기

Spring

[Spring / MVC project] STS3설치 + MySQL + MyBatis 연동

참고용으로 만들었으니, 이상한 점이나 조언 있으면 댓글 달아주세요!

기록용이니까 반말로 적겠음 :)

 

**FYI : STS4 설치하다가 legacy project 생성안되서 STS3 다시 설치함

 

 

목차

0. 환경

1. STS3/4 설치

2. 기초 세팅

3. String Legacy Project 생성

4. Tomcat 연동

5. MySQL  연동

6. MyBatis 연동

7. jUnit으로 테스트


0. 환경

Windows 10 Pro

Tomcat 9

JDK 11

=> 이미 java, tomcat은 깔려있고 환경설정도 돼있다는 가정하에 진행함

 

Date: 2023/05/16


1. STS(Spring Tool Suite) 설치

1-1. STS4 설치

더보기

필자는 Windows를 사용중이기 때문에 Windows를 설치한다. 각자 운영체제에 맞게 다운받으면 된다.

 

Spring | Tools

 

spring.io

아래와 같은 .jar 파일로 다운로드가 된다.

원하는 곳에 압축을 풀고 나면 안에 'contents.zip' 파일 압축을 풀어준다.

압축을 풀면 아래와 같은 폴더가 생긴다.

SpringToolSuite4.exe 파일을 열어준다.

1-2. STS3 설치

아래 경로에서 다운로드 받으면 된다.

https://github.com/spring-attic/toolsuite-distribution/wiki/Spring-Tool-Suite-3

 

Spring Tool Suite 3

the distribution build for the Spring Tool Suite and the Groovy/Grails Tool Suite - spring-attic/toolsuite-distribution

github.com

shortcut 만들어서 바탕화면에 놓고 쓰면 편하다.


2. 기초 설정

원하는 경로를 지정해주면 되는데, 그냥 default 경로로 지정해 줘도 무방하다.

STS 첫 화면

2-1. Plugin 설치 (STS3를 설치했다면 필요없음 -> 2-2로 이동)

STS 4부터는 SPRING Boot만을 지원하기 때문에 JSP를 지원하지 않고, Spring Legacy Project를 생성할 수 없기 때문에 추가 설치가 필요하다.

(필수는 아니라서 필요없다면 설치를 안 해도 무방함)

 

2-1-1. Java Web Developer Tools 설치

더보기

JSP를 사용하기 위해서는 추가적으로 설치를 해야한다.

 

[Help] > [Install New Software...] > ...

재시작되고 [Window] > [Preferences] 들어가보면 없던 [Web]가 생겨있을 것이다.

2-1-2. Spring Tools3 Add-On 설치

더보기

'Spring Legacy Project' 를 사용하려면 설치해야한다.

 

[Help] > [Eclipse Marketplace...] > ...

[ERROR]

[해결] : 더이상 STS4툴에서 STS3 추가해서 legacy project를 생성하는 방법은 불가능 하다고 함.

[Help] > [Install New Software...] > ...

'Work with:' 옆  path 넣는 곳에 아래 URL을 입력하고 나오는거 전부 체크해서 [Next >]

 

http://download.eclipse.org/mylyn/releases/latest 

 

Eclipse software repository | The Eclipse Foundation

The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 360 open source projects, including runtimes, tools and frameworks.

download.eclipse.org

이렇게 하고 다시 [Help] > [Eclipse Marketplace...] >로 돌아가서 설치하면,

2-2. JDK 지정

STS3에서는 없었던것 같은데, STS4에는 JRE가 plugin 으로 내장되어 있는듯하다.

 

[Window] > [Preferences] > [Java] > [Installed JREs]

2-2-1. 내장된 JRE 사용하기 (STS4)

2-2-2. 다운받은 JDK 지정해주기

다운받은 JDK 11을 [Add...] 했는데 경고문이 떴다 : "The selected JRE does not support the current compiler compliance level of 17."

이건 Compiler 버전이 안맞아서 그런것이다. 다음 단계에서 설정해 줄 거다. 일단 넘어가자.

Add 한 JDK의 체크박스에 체크해준다.

(내장된 JRE 는 삭제해도 무방함)

 

2-3. Compiler 설정

설정한 JDK 버전에 맞게 세팅한다.

 

[Window] > [Preferences] > [Java] > [Compiler]

 

2-4. 인코딩 UTF-8 설정

자세한 사항은 다음 링크를 참고하자.

 

https://avecmoi.tistory.com/34

 

[Spring / eclipse] 한글깨짐 UTF-8 설정

한글깨짐을 수정하는 방법에 대해서 알아보자. 인코딩 UTF-8로 설정하지 않으면 한글이 깨져서 '??'로 찍혀서 나오는걸 볼 수 있다. 이를 해결하기 위해서 인코딩 변경을 해보자. [Window] > [Preferences

avecmoi.tistory.com

 

2-5. Gradle 설정

Gradle 과 Java의 충돌을 방지하기 위해 경로를 입력한다.

[Window] > [Preferences] > 검색 'gradle' > [Gradle]

'Java home'에 JDK폴더 경로를 지정해준다.

 

2-6. Eclipse Web Developer Tool 설치

STS는 기본적으로 JSP Editor 가 설치되어있지 않다고 한다. (Eclipse Web Developer Tools는 JSP를 지원안함)

 

  • 맨 위에 메뉴바에서 [Help] > [Eclipse Marketplace...]

  • 검색 'web developer'

[ERROR]

더보기

흠 ,, 버전이 안맞는건가,, 일단 넘어감


3. Spring Legacy Project (현재 STS3만 가능)

3-1. Project 생성

[File] > [New] > [Spring Legacy Project] > ...

이름설정은 꼭 aaa.bbb.ccc 이런 구조로 해야함
자동으로 파일들이 만들어짐

3-2. 프로젝트 자바(JDK, 컴파일러) 버전 변경

3-2-1. Project Facets

[만든 프로젝트] 우클릭 > [Properties] > [Project Facets] > ...

자신이 설치한 Java 버전으로 선택해주면 된다.

 

3-2-1. pom.xml 버전 변경

자신이 설치한 Java 버전으로 변경해주면 된다.

 

위 사진 처럼 [maven-compiler-plugin] <version> 태그의 버전도 원하는 버전/최신 버전으로 변경하고, 그 아래 있는 <source>, <target> 태그의 버전은 자신이 설치한 Java 버전으로 변경하면 된다.


4. Tomcat 연동

왼쪽 코너에 'Servers'라고 탭이 있다. 안보인다면 [Window] > [Show View] > [Servers] 하면 탭 열린다.

파란 글씨로 적혀진 'No servers are available. Click this link to create a new server...'를 클릭한다.

본인이 설치한 것과 같은 버전을 선택
Add&nbsp; 하고나서 Finish


5. MySQL 연동

(MySQL이 설치되어있고, 계정과 database가 있다는 가정하에 진행)

 

5-1. pom.xml에 라이브러리 추가

<dependencies></dependencies> 사이에 아래 코드를 넣어주면 된다.

<!-- MySQL -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
 </dependency>
 
 <!-- Spring-jdbc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${org.springframework-version}</version>
</dependency>

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

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

<!-- MyBatis-Spring -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.1</version>
</dependency>

${org.springframework-version}을 입력한 이유는 spring버전과 동일하게 하기 위해서다.

 

5-2. root-context.xml 수정

5-2-1. Namespaces  수정

다시 'Source'로 돌아가면 자동으로 변경되어 있음

5-2-2. Source에 코드 추가

<!-- 아래 내용 변경하기 -->
<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
    <property name="url"
        value="jdbc:mysql://127.0.0.1:3306/[데이터베이스명]?useSSL=false&amp;serverTimezone=UTC">
    </property>
    <property name="username" value="[MySQL 계정아이디]"></property>
    <property name="password" value="[MySQL 계정비밀번호]"></property>
</bean>

MySQL설치할 때 default값으 3306이다. 별도로 수정하지 않았다면 그대로 3306을 사용하면 된다.

 

아래 코드를 root-context.xml 에 추가한다.

<!-- 자신의 PC(로컬)에 MySql을 설치했을 경우 -->
<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
    <property name="url"
        value="jdbc:mysql://127.0.0.1:3306/test?useSSL=false&amp;serverTimezone=UTC">
    </property>
    <property name="username" value="test_ex"></property>
    <property name="password" value="1111"></property>
</bean>


6. MyBatis 연동

6-1. root-context.xml 코드 추가

pom.xml 에는 위에 MySQL 에서 한꺼번에 넣었으므로 넘어가고, root-context.xml 에 코드를 추가해준다.

<!-- mybatis SqlSessionFactoryBean -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"></property>
    <property name="configLocation" value="classpath:/mybatis-config.xml" />
    <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>

6-2. Mapping을 위한 추가 파일 생성

6-2-1. mybatis-config.xml 생성

 

[src/main/resources] > [New] > [Other...] > ...

방금 생성한 'mybatis-config.xml' 에 아래 코드를 추가해준다.

<!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
	<typeAliases>		
	</typeAliases>
</configuration>

6-2-2. mapper.xml 생성

 

[src/main/resources] > [New] > [Package] > ...

package 명을 'mappers'라고 지었다.

생성한 Package 'mappers'에 [*Mapper.xml]파일을 추가할건데, [testMapper.xml]라는 명으로 만들었다.

그리고나서 만들어진 파일에 아래 코드를 추가한다.

<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="hanazuou.imas.mlst.testMapper">
</mapper>


7. jUnit으로 테스트

7-1. pom.xml 수정

version을 4.12로 변경한다.

7-2. Library에 jUnit 추가

[만든 Project] > [Properties] > [Java Build Path] > [Libraries] > ...

 

7-3. test할 class 생성

총 2개를 만들거다. ( Class Name : MyBatisTest.java / MySQLConnectionTest.java)

만들어진 클래스에 아래코드를 넣는다.

 

[MyBatisTest.java]

더보기
package com.sample.controller;

import javax.inject.Inject;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"file:src/main/webapp/WEB-INF/spring/root-context.xml"})
public class MyBatisTest 
{
 @Inject
 private SqlSessionFactory sqlFactory;
 
 @Test
 public void testFactory(){
     System.out.println("\n >>>>>>>>>> sqlFactory 출력 : "+sqlFactory);
 }
 
 @Test
 public void testSession() throws Exception{
     
     try(SqlSession session = sqlFactory.openSession()){
         
         System.out.println(" >>>>>>>>>> session 출력 : "+session+"\n");
         
     } catch (Exception e) {
         e.printStackTrace();
     }
 }
 
}

 

[MySQLConnectionTest.java]

더보기
package com.sample.controller;

import java.sql.Connection;

import javax.inject.Inject;
import javax.sql.DataSource;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "file:src/main/webapp/WEB-INF/spring/root-context.xml" })
public class MySQLConnectionTest {
 
 @Inject
 private DataSource ds;

 @Test
 public void testConnection() throws Exception {

     try (Connection con = ds.getConnection()) {

         System.out.println("\n >>>>>>>>>> Connection 출력 : " + con + "\n");

     } catch (Exception e) {
         e.printStackTrace();
     }
 }
 
}

 

7-4. 테스트하기

만든 java파일 오른쪽 클릭해서 > [Run as] > [jUnit test]

위 그림과 같이 출력이 됐다면, 잘 연동 됐다는 뜻이다.

 


설정할거 왤케 많아? 아직 남았다,,콘티뉴,,!

[Spring / MVC project] MVC project 추가 설정

 

안뇽~~~ :)