IDE에 Spring Boot 설치 및 설정 관련 사항은 별도 설명 없이 프로젝트 생성 부터 설명이 진행한다.

 

1. Spring Boot 프로젝트 생성하여 아래와 같은 Dependencies를 추가 한다.

* JDBC API
* Spring Data JPA
* Spring Data JDBC
* Rest Repositories
* Rest Repositories HAL Browser

2. Depdependency 내용

Gradle - Build.gradle 

plugins {
	id 'org.springframework.boot' version '2.2.4.RELEASE'
	id 'io.spring.dependency-management' version '1.0.9.RELEASE'
	id 'java'
}

group = 'com.demo'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-data-rest'
	implementation 'org.springframework.data:spring-data-rest-hal-browser'
	compile 'mysql:mysql-connector-java'
	compileOnly 'org.projectlombok:lombok'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation('org.springframework.boot:spring-boot-starter-test') {
		exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
	}
}

test {
	useJUnitPlatform()
}

maven - Pom.xml

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-rest</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-rest-hal-explorer</artifactId>
		</dependency>

		<dependency>
			<groupId>org.postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>

3. 기본 게시판 Entity 내용

/* com.demo.back.entity>Board.java */ 
package com.demo.back.entity;

import java.time.LocalDate;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Board {
	
	@Id
	@GeneratedValue
	private Long seq;
	
	@Column
	private String title;
	
	@Column
	private String context;
	
	@Column
	private LocalDate uptDt;
	
	@Column
	private LocalDate regDt;

	.... getter & setter ...
}

4. 레파지토리 연계 리소스

/* com.demo.back.repository > BoardRepository.java */

package com.demo.back.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;

import com.demo.back.entity.Board;

@RepositoryRestResource(collectionResourceRel = "board", path = "board")
public interface BoardRepository extends JpaRepository<Board, Long>{
}

5. application 설정 파일

/* src/main/resources/application.properties */

server.port=8000

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

spring.data.rest.base-path=/api
spring.data.rest.default-page-size=10

spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=true

6. 외부에서 접근 가능 하게 Header 정보 변경

/* com.demo.back.common > CORSFilter.java */
package com.demo.back.common;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Component;

@Component
public class CORSFilter implements Filter {
	
	@Override
	public void init(FilterConfig fileterConfig) throws ServletException {
		// TODO Auto-generated method stub
	}

	@Override
	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "*");
        filterChain.doFilter(servletRequest, servletResponse);
    }
	
	@Override
	public void destroy() {
		
	}
}

7. 구동 후 http://localhost:8000/api/ 접속 하면 위 Dependencies 했던 Rest Repositories HAL Browser 가 실행하여 테스트 할 수 있습니다.

+ Recent posts