백엔드는 자바, 스프링, 메이븐 으로 만들고
프론트엔드는 REACT 로 웹개발환경을 만드는 과정이다.
백앤드 개발툴은 STS4 로 다운로드 받아서 설치한다.
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
입력한다.
브라우저에 아래와 같이 나오면 동작 된것이다.
'개발환경' 카테고리의 다른 글
자바 스프링 메이븐 REACT 개발환경 프론트엔드(2/2) (1) | 2024.12.10 |
---|---|
MAVEN 빌드시 버전에러 (2) | 2024.11.11 |