개발환경
JAVA8
STS
MYSQL
MYBATIS

 

프로젝트 생성

https://start.spring.io/

 

-> 해당 화면처럼 생성

-> SNAPSHOT이랑 M 버전은 인터페이스가 새로 추가될수도 있는 버전이라 해당 이름이 안붙어있는 버전 선택

 

STS에서 해당 프로젝트 import

 

->방금 위에서 받은 프로젝트 압축푼 폴더 선택

 

 

프로젝트를 처음받으면 해당 화면처럼 에러가 나옴

 

프로젝트 빌드

 

에러가 없어진것을 볼수있음

 

utf-8 설정

루트 디렉터리에 build.gradle 수정
buildscript {
    ext {
        springBootVersion = '2.2.6.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath "io.spring.gradle:dependency-management-plugin:1.0.9.RELEASE"
    }
}

allprojects {
    group = 'com.board'
    version = '0.0.0'
}
subprojects {

    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'

    sourceCompatibility = 1.8

    repositories {
        mavenCentral()
    }
    
    task initSourceFolders {
        sourceSets*.java.srcDirs*.each {
            if( !it.exists() ) {
                it.mkdirs()
            }
        }

        sourceSets*.resources.srcDirs*.each {
            if( !it.exists() ) {
                it.mkdirs()
            }
        }
    }

    dependencies {
	compileOnly('org.projectlombok:lombok')
	annotationProcessor 'org.projectlombok:lombok'
	
    }
}

 

루트디렉터리에 setting.gradle 수정
rootProject.name = 'board'
include 'core'
include 'admin'

 

Refresh Gradle Proejct 하면 프로젝트가 나눠진것을 볼수있음

 

admin 모듈안에 properties 파일 생성

 

application.properties
# Deploy profile ( prod, stage, dev, local )
spring.profiles.active=local

# encoding
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true

#View Configuration
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

- Deploy Profile 버전에 따라 개발, 운영, 로컬 프로퍼티를 관리할수있음

 

application-local.properties
server.port=8080

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/TB_BOARD?serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=1234

- 필자는 MYSQL 데이터베이스를 이용할 예정임

 

해당 아래사이트에서 MYSQL Installer 설치

https://dev.mysql.com/downloads/windows/installer/8.0.html

 

MySQL :: Download MySQL Installer

Select Operating System: Select Operating System… Microsoft Windows Select OS Version: All Windows (x86, 32-bit) Windows (x86, 32-bit), MSI Installer 8.0.26 2.4M (mysql-installer-web-community-8.0.26.0.msi) MD5: eaddc383a742775a5b33a3783a4890fb | Signatu

dev.mysql.com

 

 

 

 

 

 

 

 

 

비밀번호는 1234로 했습니다.

 

 

 

 

mysql workbench 실행

해당 DB 접속

 

TB_BOARD 스키마 생성

 

 

TB_BOARD 스키마안에 테이블 생성

 

-> 테스트하기위해 생성한 테이블이므로 테스트 후 삭제할 예정임

 

 

root 디렉터리 해당구조처럼 만들기

-> main/java, main/resources 등 삭제

 

admin 프로젝트 build.gradle 설정

apply plugin: 'war'
def timestamp = new Date().format('yyMMddHHmm')
bootWar.enabled = false // (1)
war.enabled = true  // (2)
war {
   archiveName = "admin-${version}-"+timestamp+".war"
}

dependencies {
	implementation project(':core')

	implementation 'org.springframework.boot:spring-boot-starter-web'

	//db
	runtimeOnly 'mysql:mysql-connector-java'
   
	// MyBatis
	implementation("org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.2")
   
	testImplementation('org.springframework.boot:spring-boot-starter-test')
    
	// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools
	implementation group: 'org.springframework.boot', name: 'spring-boot-devtools', version: '2.2.6.RELEASE'

	providedRuntime('org.springframework.boot:spring-boot-starter-tomcat')
   
	// Apache Http Requests
	implementation group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.12'         // https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient
	
	// Tiles Setting
	implementation group: 'org.apache.tiles', name: 'tiles-jsp', version: '3.0.8'      // https://mvnrepository.com/artifact/org.apache.tiles/tiles-jsp
	implementation group: 'org.apache.tiles', name: 'tiles-core', version: '3.0.8'      // https://mvnrepository.com/artifact/org.apache.tiles/tiles-core
   
	/* Jsp Setting */
	implementation group: 'org.apache.tomcat.embed', name: 'tomcat-embed-jasper', version: '9.0.31'   // https://mvnrepository.com/artifact/org.apache.tomcat.embed/tomcat-embed-jasper
	implementation group: 'org.apache.taglibs', name: 'taglibs-standard-impl', version: '1.2.5'      // https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-impl
	providedRuntime group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1'      // https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api
	implementation group: 'javax.servlet', name: 'jstl'                                    // https://mvnrepository.com/artifact/javax.servlet/jstl
}

 

admin 프로젝트에 패키지, 클래스 파일 생성

-> com.board.admin 패키지 생성, AdminApplication.java, SevletInitializer.java 생성

 

AdminApplication.java
package com.board.admin;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan(basePackages = "com.board")
@MapperScan(basePackages = "com.board.dao")
public class AdminApplication {

	public static void main(String[] args) {
		SpringApplication.run(AdminApplication.class, args);
	}
}

 

SevletInitializer.java 
package com.board.admin;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

   @Override
   protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
      return application.sources(AdminApplication.class);
   }

}

 

admin 프로젝트에 controller 패키지, 클래스 파일 생성

 

TestController.java
package com.board.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

//import com.board.dao.TestMapper;
//import com.board.service.TestService;

@RestController
public class TestController {


	//@Autowired 
	//TestService testService;
	
	//@Autowired 
	//TestMapper testMapper;
	
	@GetMapping("/test")
	public String test() {
		//testService.test();
		//System.out.println(testMapper.test());
		return "ok";
	}
	
}

 

http://localhost:8080/test를 호출

 

core 프로젝트에 build.gradle 추가
bootJar{
    enabled = false;
}
jar {
    enabled = true;
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
}

 

core 프로젝트에 패키지, 클래스 파일 생성

-> com.board.dao 패키지, com.board.service 패키지 생성후 각각 파일 생성

 

TestService.java
package com.board.service;

import org.springframework.stereotype.Service;

@Service("testService")
public class TestService {

    public void test(){
        System.out.println("test!!!!");
    }

}

 

TestMapper.java
package com.board.dao;

public interface TestMapper {

    int test();

}

 

core 프로젝트에 resources 경로 밑에 com.board.dao 패키지 생성후 파일 생성

 

TestMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- FAQ SQL Mapper -->
<mapper namespace="com.board.dao.TestMapper">

    <select id="test" resultType="int">
        SELECT
            COUNT(*)
        FROM
            MEMBER
    </select>

</mapper>

 

위 컨트롤러에서 주석한부분 해제
package com.board.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import com.board.dao.TestMapper;
import com.board.service.TestService;

@RestController
public class TestController {


	@Autowired 
	TestService testService;
	
	@Autowired 
	TestMapper testMapper;
	
	@GetMapping("/test")
	public String test() {
		testService.test();
		System.out.println(testMapper.test());
		return "ok";
	}
	
}

 

http://localhost:8080/test를 호출

service와, mapper가 정상적으로 출력된것을 확인할수 있습니다.

 

다음포스팅에서는 tiles 설정부분을 개발해보겠습니다. 감사합니다.

복사했습니다!