본문 바로가기
Spring Boot

[Spring Boot] REST API 제작기 - 1.프로젝트 생성

by 오이가지아빠 2022. 2. 17.

#1. Spring Boot REST API 제작

RESTful API에 대한 설명이나 디자인 패턴 등등은 스킵하고 바로 제작으로 들어가보도록 하겠다.

실무에 바로 적용해서 사용할 수 있는 수준을 목표로 만들어 보자.

 

먼저 기본환경은 Maven, JDK11로 잡고 프로젝트 생성부터. 프로젝트 명은 INTJ로 하겠다.

 

Intellij Ultimate 버전을 사용하거나, STS를 사용한다면, 툴에서 바로 Spring Boot프로젝트를 생성할 수 있다.

아니면, Spring 홈페이지에서 Spring Initializr를 통해 생성한 프로젝트 파일을 열어도 된다.

 

최소한 필요한 의존성만 추가하고, 개발 도중 필요한 라이브러리는 그때그때 채워 넣기로 하고 일단 생성.

바로 넣을 수 있는 의존성은 위와 같고, 추가적으로 Maven Repository에서 jwt, common-beanutils, log4jdbc를 찾아서 추가해주도록 하자. 또한, 실무에서 오라클DB를 사용할 예정이므로, ojdbc8-12.2.0.1.jar파일도 구해다가 넣어놓자.

(위에 나열한 라이브러리들은 나중에 사용할 것이다.)

 

최종적으로 완성된 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.demo</groupId>
    <artifactId>intj</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>intj</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>
        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>1.9.4</version>
        </dependency>
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.18.3</version>
        </dependency>
        <dependency>
            <groupId>org.bgee.log4jdbc-log4j2</groupId>
            <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
            <version>1.16</version>
        </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>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>oracle</groupId>
            <artifactId>ojdbc8</artifactId>
            <version>12.2.0.1</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/ojdbc8-12.2.0.1.jar</systemPath>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

 

#2. 추가 설정(feat. Offline 사내망)

최초에는 인터넷이 연결된 외부망에서 개발하더라도, 추후에는 오프라인 사내망으로 이동시켜서 운영해야 하기 때문에

필요한 라이브러리들을 관리하기 편한 곳으로 이동시켜서 한꺼번에 이동시켜야 한다.

 

그러기 위해서는 Maven의 settings.xml 파일을 수정하여 로컬 라이브러리 경로를 지정해주어야 하는데,

먼저 아래와 같은 파일을 하나 만들어서 이름을 settings.xml 로 저장한다.

(localRepository 경로는 원하는 곳으로 지정한다.)

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/settings/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

    <localRepository>D:\HIVE\repository</localRepository>

</settings>

Intellij 기준으로 Settings에 아래와 같이 세팅하면 되고,

eclipse나 sts라면 Window > Preferences 에서 아래와 같이 세팅한다.

설정을 완료하면 이제 오프라인망으로 이동할 때, 소스와 함께 지정한 로컬 repository 디렉토리도 함께 가져가면 라이브러리 의존성 걱정은 끝이다.

 

추가적으로 프로젝트 Root 경로에 lib폴더를 만들고 ojdbc8-12.2.0.1.jar 파일을 넣은 후, 아래와 같이 세팅하면 Maven Repository에서 가져올 수 없는 ojdbc 라이브러리를 사용할 수 있게 된다.

앞으로 Maven Repository에 없는 라이브러리는 모두 아래와 같은 방식으로 사용할 예정이다.

<dependency>
    <groupId>oracle</groupId>
    <artifactId>ojdbc8</artifactId>
    <version>12.2.0.1</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/ojdbc8-12.2.0.1.jar</systemPath>
</dependency>

 

의존성 추가가 완료된 프로젝트를 기동시켜보자. 아무런 설정을 하지 않고 기본 8080포트로 접속한다.

위 화면이 나타난다면, 기본설정이 완료된 것이다. 의존성 중 Spring Security가 있어서 Form Login화면이 자동으로 나타나게 된다.

서버 기동 시 로그에 찍히는 정보를 통해 로그인 해볼 수도 있지만, 어차피 사용하지 않을 것이기 때문에 해보지는 않겠다.

 

다음 시간에는 실제 데이터베이스를 연동하는 방법에 대해서 진행해보도록 하겠다.

 

다음글 - [Spring Boot] - [Spring Boot] REST API 제작기 - 2.DB연결(Mybatis)

반응형

댓글