ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] Springboot Properties 설정파일을 외부에서 가져오자
    백엔드/Spring 2022. 8. 11. 02:49

    🚀 들어가며

    • 보통 개인 프로젝트에서 properties나 yml 파일을 프로젝트 내부에서 관리한다.
    • 이때 로컬 개발기와 개발기 그리고 운영기의 설정파일의 정보가 다르다.
    • 그렇다고 개발기 설정파일, 운영기 설정파일을 Github에 올리면 안되기 때문에, 제거를 해줘야한다.
    • 이를 위해서 착안하여, 프로젝트 외부의 경로에서 설정파일을 가져오는 방식이다.
    • 오픈소스로 Maven Central Repository 등록을 완료하였다.
    • 목표는 OS 별로 경로를 설정할 수도 있고, 추후에는 외부 서버에 있는 설정파일을 읽어들이기 위함에 있다.

    🔗  Github Repo

    https://github.com/rojae/load-prop

     

    GitHub - rojae/load-prop: Spring Boot Load Properties Module

    Spring Boot Load Properties Module. Contribute to rojae/load-prop development by creating an account on GitHub.

    github.com

     


    📑  사용법

    1. pom.xml 추가

    사용법은 Maven Repository에 등록했기 때문에 pom.xml을 수정하여 사용이 가능하다.

    (+ 위 Github 소스를 jar packing해서 maven central repository를 거치지 않을 수도 있다)

        <dependency>
            <groupId>io.github.rojae</groupId>
            <artifactId>load-prop</artifactId>
            <version>0.1.0</version>
        </dependency>

     

     

    2. application.properties 추가

    서버에서 아래 설정을 추가만 해주면 된다.

    이때 설정파일 경로에 위치한 모든 설정 파일들을 로딩한다.

    만일 디렉토리 내부에 디렉토리가 있다면, 내부에 있는 하위 디렉토리를 탐색한다.

    # Properties Loader
    prop.load.active=enable | disable		# 외부 설정파일 로딩 - 활성화, 비활성화
    prop.load.console=enable | disable		# 콘솔 로그 - 활성화, 비활성화
    prop.load.path={resource absolute path} 	# 외부 설정파일 로딩 - 절대경로

     

    3. 서버 기동 그리고 테스트

    절대경로로 입력한 설정파일이 기동될때 읽어진다.

      .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::                (v2.7.2)
    
    2022-08-10 01:54:57.302  INFO 36215 --- [           main] com.example.demo.DemoApplication         : Starting DemoApplication using Java 11.0.9.1 on rojaeui-MacBookPro.local with PID 36215 (/Users/rojae/Documents/workbook/test2/target/classes started by rojae in /Users/rojae/Documents/workbook/test2)
    2022-08-10 01:54:57.306  INFO 36215 --- [           main] com.example.demo.DemoApplication         : No active profile set, falling back to 1 default profile: "default"
    2022-08-10 01:54:58.040  INFO 36215 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
    2022-08-10 01:54:58.048  INFO 36215 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
    2022-08-10 01:54:58.048  INFO 36215 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.65]
    2022-08-10 01:54:58.116  INFO 36215 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
    2022-08-10 01:54:58.116  INFO 36215 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 755 ms
    [2022-08-10 01:54:58] [정보     ] ---------------------------------------------------------- 
    [2022-08-10 01:54:58] [정보     ] Properties File = /Users/rojae/Desktop/prop/config.properties 
    [2022-08-10 01:54:58] [정보     ] ---------------------------------------------------------- 
    [2022-08-10 01:54:58] [정보     ] config.password=password 
    [2022-08-10 01:54:58] [정보     ] config.url=localhost 
    [2022-08-10 01:54:58] [정보     ] config.user=rojae 
    [2022-08-10 01:54:58] [정보     ] ---------------------------------------------------------- 
    [2022-08-10 01:54:58] [정보     ] Properties File = /Users/rojae/Desktop/prop/api/api.properties 
    [2022-08-10 01:54:58] [정보     ] ---------------------------------------------------------- 
    [2022-08-10 01:54:58] [정보     ] api.delete=https://jsonplaceholder.typicode.com/posts/1 
    [2022-08-10 01:54:58] [정보     ] api.put=https://jsonplaceholder.typicode.com/posts/1 
    [2022-08-10 01:54:58] [정보     ] api.post=https://jsonplaceholder.typicode.com/posts 
    [2022-08-10 01:54:58] [정보     ] api.get2=https://jsonplaceholder.typicode.com/comments 
    [2022-08-10 01:54:58] [정보     ] api.get1=https://jsonplaceholder.typicode.com/posts 
    [2022-08-10 01:54:58] [정보     ] api.patch=https://jsonplaceholder.typicode.com/posts/1 
    2022-08-10 01:54:58.405  INFO 36215 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
    2022-08-10 01:54:58.421  INFO 36215 --- [           main] com.example.demo.DemoApplication

    🙋🏻‍♂️ 마치면서

    • 프로젝트 외부에서 properties 설정파일을 불러오는 기능을 개발하였다. (아직까지는 초라한거 같다)
    • 나중에는 SSH로 접속하여 설정파일을 읽는 기능을 추가할 것이다.
    • 이런 방식을 진행하게 되면, 설정파일이 외부에 존재하게 되어 형상관리서버 (Github)에 올리지 않는다.
    • 즉 잘못 올릴 문제도 없고, 절대경로로 서버에서 가지고 있기 때문에 문제가 생길 가능성도 적다는 것이다.
    • Maven Central Repository에 등록했다.
    • 어떤 식으로 오픈소스가 개발되는지 알게된 좋은 경험이였다 :)
    반응형
Designed by Tistory.