개발환경 |
JAVA8 STS MYSQL MYBATIS |
프로젝트 생성 |
-> 해당 화면처럼 생성
-> 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
비밀번호는 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 설정부분을 개발해보겠습니다. 감사합니다.
'스프링' 카테고리의 다른 글
[Spring Boot] 3. lombok 설정 + 로그인 + 회원가입 개발 (Gradle+Mybatis+멀티프로젝트+MYSQL+STS) (0) | 2021.08.05 |
---|---|
[Spring Boot] 2. TILES 설정 (Gradle+Mybatis+멀티프로젝트+MYSQL+STS) (0) | 2021.08.03 |
[Spring] Requset 메소드 사용하기 (0) | 2021.07.05 |
[Spring] 개발환경에서 http 로그 자세히 보기 (0) | 2021.07.05 |
[Spring] @RequiredArgsConstructor (0) | 2021.06.16 |