본문 바로가기

개발환경

자바 스프링 메이븐 REACT 개발환경 백엔드(1/2)

백엔드는 자바, 스프링, 메이븐 으로 만들고

프론트엔드는 REACT 로 웹개발환경을 만드는 과정이다.

 

백앤드 개발툴은 STS4 로 다운로드 받아서 설치한다.

 

https://spring.io/tools

 

Spring | Tools

 

spring.io

 

 

STS3 는 구 이클립스 의 MVC 와 연동할 때도 있을때 더 적합하다. (플러그인 설치 등 환경설정시 빌드에러가 적다.)

 

아예 메이븐(웹) 만 사용 할것이면 편의성 측면에서 STS4 가 적합 하다.

메이븐을 사용하는 이유는 웹구축시 종속성(환경 라이브러리) 구축과 관리가 편해서다. 

목적있는 응용프로그램이나 필요한 .jar 파일은 만들때는 메이븐  WAR 가 아닌 JAR 로 사용한다.

웹 구축은 WAR 로 빌드를 해야 build target 에 생성된 WAR 로 WAS 서버에서 유지보수가 쉽다.

 

메이븐 빌드시 에러가 있을경우

우선 pom.xml, application.properties 부분을 수정에서 종속성(dependency 등 관련)  빌드 에러를 잡는데,

여기서 확인이 안되면 settings.xml 을 확인해야 될때도 있다.

이부분까지 가면

사용자 > .me> repository > settings.xml 까지 확인해야하면 

툴에서 경로설정등 새로 잡아줘야 할수도 있어서 까다로울수 있다.

 

메이븐 빌드 에러가 없다면

아래 프레임워크 를 만든후 필요한 5개의 스크립트를 사용한다.

POM.xml 

WebConfig.java

WebBApplication.java

SpringBackendTestController.java

application.properties

 

// ServletInitializer.java (메이븐 프레임워크 생성시 defualt 생성됨)

 

프론트 REACT  연동시 스프링 백엔드에는 5개 스크립트를 추가하면 동작확인 이 가능하다.


 

POM.xml


<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

 

<!-- STS4 툴에서 처음 프로젝트 생성할때 작성한 내용 -->

<groupId

>com.example.demo</

groupId

>

<artifactId>WebB</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>war</packaging>

 

<name>WebB</name>

<description>WebB project</description>

 

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>3.0.0</version>

<relativePath /> <!-- lookup parent from repository -->

</parent>

 

<dependencies>

<!-- Spring Boot Web 스타터 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

 

<!-- Spring Boot Task 스타터는 뺐다 -->

 

<!-- Spring Boot Data JPA 스타터 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-data-jpa</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-jdbc</artifactId>

</dependency>

 

<!-- MariaDB JDBC 클라이언트 -->

<dependency>

<groupId>org.mariadb.jdbc</groupId>

<artifactId>mariadb-java-client</artifactId>

<version>2.7.4</version> <!-- 최신 안정 버전으로 변경한다 실제 디비서버의 마리아디비 버전은 10.5 이나 호환된다.-->

</dependency>

 

<!-- Thymeleaf 템플릿 엔진 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-thymeleaf</artifactId>

</dependency>

 

<!-- Spring Boot Actuator -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-actuator</artifactId>

</dependency>

 

<!-- Spring Boot 로깅 스타터 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-logging</artifactId>

</dependency>

 

<!-- 테스트 관련 의존성 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

<scope>test</scope>

</dependency>

</dependencies>

 

<build>

<plugins>

<!-- Spring Boot Maven 플러그인 -->

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

</plugins>

</build>

<!-- 아래  부분이 없으면 application.properties 의 디비설정을 했는데 도 undefind 에러가 날수 있다-->

<repositories>

<repository>

<id>central</id>

<url>https://repo.maven.apache.org/maven2</url>

</repository>

</repositories>

</project>

 

 


WebConfig.java


 

package com.example.demo;

 

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.servlet.config.annotation.CorsRegistry;

import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

 

@Configuration

public class WebConfig {

@Bean

public WebMvcConfigurer corsConfigurer() {

return new WebMvcConfigurer() {

@Override

public void addCorsMappings(CorsRegistry registry) {

registry.addMapping("/**")

.allowedOrigins("http://localhost:3000") // React 개발 서버 주소

.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS");

                                                                     }

                                             };   

                       }

}

 

 


WebBApplication.java


package com.example.demo;

 

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

 

@SpringBootApplication

public class WebBApplication {

 

public static void main(String[] args) {

SpringApplication.run(WebBApplication.class, args);

                       }

}

 

 


SpringBackendTestController.java


package com.example.demo;

 

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RestController;

 

@RestController public class SpringBackendTestController {

 

@GetMapping("/api/SpringBackendTest") public String sayHello() { return

" Spring Backend Test";

                }

}

 

 


application.properties


spring.application.name=WebB

server.port=8081

 

# MariaDB 데이터베이스 연결 설정(사전에 디비 서버 먼저 구축 한다 디비서버는 윈도우환경보다 CentOS Stream 9버전이나 Ubuntu 환경에서 구축하는것이 편하다. 연동전 디비서버의 포트 3306은 열어놓고 user 계정 생성후,  마리아디비 를 사용하기위해 sudo systemctl start mariadb 사용해야

에러없이 아래 소스와 연동한다. 

 

spring.datasource.url=jdbc:mariadb://192.168.198.133:3306/database_a

spring.datasource.username=user

spring.datasource.password=1234

spring.datasource.driver-class-name=org.mariadb.jdbc.Driver

 

# JPA와 Hibernate 설정

spring.jpa.hibernate.ddl-auto=update

spring.jpa.database-platform=org.hibernate.dialect.MariaDBDialect

spring.jpa.show-sql=true

spring.jpa.properties.hibernate.format_sql=true

 

# 커넥션 풀 (HikariCP) 설정

spring.datasource.hikari.minimum-idle=5

 

spring.datasource.hikari.idle-timeout=50000

spring.datasource.hikari.max-lifetime=60000

 

 

# JDBC 커넥션 풀 (옵션)

spring.datasource.hikari.maximum-pool-size=20

 

# 로그 레벨은 필요시 사용하자

# logging.level.org.springframework=DEBUG

# logging.level.org.hibernate=DEBUG

 

spring.profiles.active=dev

 


STS4 > 프로젝트 > Run As > Spring Boot App 

동작후 브라우저 입력창에 

http://localhost:8081/api/SpringBackendTest 

입력한다.

 

브라우저에 아래와 같이 나오면 동작 된것이다.