Property 관리

Spring Property

property 관리란 주요 정보들을 보관하기 위한 파일들을 만들고 정보를 분할 저장한 뒤 원하는 파일에서 불러와서 사용하도록 만드는 체계를 말한다. Spring에서도 property 관리를 지원해주며, spring-context 모듈이 이를 처리한다.

프로퍼티를 위해 생성할 수 있는 파일 형식은 크게 두 가지이며 다음과 같다.

  • .properties

  • .yaml 또는 .yml

properties 파일

.properties 확장자를 가지는 파일은 데이터를 다음 양식에 따라 저장한다.

#주석
이름=데이터
이름=[데이터1,데이터2,데이터3]

데이터가 한 개인 경우와 여러 개인 경우 저장하는 방법이 다르다. 이 문서에서는 database dbcp 설정을 진행하려고 하므로 properties 파일을 다음과 같이 작성한다.

database.properties

#database properties
database.driver=oracle.jdbc.OracleDriver
database.url=jdbc:oracle:thin:@localhost:1521:xe
database.username=test
database.password=test

# dbcp properties
database.dbcp.max-total=20
database.dbcp.max-idle=10
database.dbcp.max-wait=3000

기본적인 설정으로 인해 유니코드는 변환 후 저장된다. 만약 변환하지 않고 보고 싶다면 추가 플러그인을 설치하거나 다른 편집 모드로 열어야 한다. 또한 띄어쓰기가 금지되는 등 문법적인 제약이 존재하니 작성 시 주의해야 한다.

yaml 파일

yaml(YAML Ain't Markup Language)는 properties 등의 중복되는 이름 선언과 같은 비효율성을 개선하고 데이터 위주로 저장하기 위해 고안된 양식이다. 문법이 properties보다 엄격한 편이므로 작성 시 해당 기능을 지원하는 에디터로 하는 것이 좋다.

위에서 작성한 내용을 .yaml 파일로 저장할 경우 다음과 같이 저장된다.

database:
    driver: oracle.jdbc.OracleDriver
    url: jdbc:oracle:thin:@localhost:1521:xe
    username: test
    password: test
    dbcp:
        max-total: 20
        max-idle: 10
        max-wait: 3000

주의할 점은 소속된 항목은 탭으로 들여쓰기를 해야하며, 항목을 적고 콜론(:)을 작성한 뒤 값을 적기 전에 반드시 한 칸의 띄어쓰기를 작성해야 한다는 것이다.

property file 저장

작성한 property 파일은 일반적으로 src/main/resources에 저장한다. 편의를 위해 properties라는 파일을 생성한 뒤 database.properties 파일을 저장한다.

property load 설정

전역에서 편하게 사용할 수 있도록 root-context.xml에서 패턴을 지정하여 properties 파일들을 불러올 수 있도록 설정한다.

root-context.xml

<context:property-placeholder location="classpath:/properties/*.properties"/>
  • classpath:/ 로 시작하는 경로는 src 내부 경로를 의미한다.

  • *.properties는 확장자가 properties인 파일을 의미한다.

위와 같이 불러오도록 설정하면 프로젝트 내에서 로드한 파일을 사용할 수 있다.

property value 사용

불러온 설정값을 사용하기 위해서는 다음과 같이 사용한다.

설정 xml 파일

<bean id="dbcpSource" class="org.apache.commons.dbcp2.BasicDataSource">
    <property name="driverClassName" value="${database.driver}"></property>
    <property name="url" value="${database.url}"></property>
    <property name="username" value="${database.username}"></property>
    <property name="password" value="${database.password}"></property>

    <property name="maxTotal" value="${database.dbcp.max-total}"></property>
    <property name="maxIdle" value="${database.dbcp.max-idle}"></property>
    <property name="maxWaitMillis" value="${database.dbcp.max-wait}"></property>
</bean>

${database.driver}database.driver=oracle.jdbc.OracleDriver 속성의 값을 읽어와서 출력한다.

Java 파일

자바 파일에서는 두 가지 사용법이 있다.

@Value("${database.driver}")
String driver;

@Value는 직접적으로 변수에 해당 설정값을 주입해준다. 권장하지 않는 사용방법이다.

@Autowired
Envorinment env;

환경 정보를 주입하여 설정값을 불러오는 방법이 있다. 위와 같이 Environment 객체를 자동 할당한 뒤 원하는 부분에 다음과 같이 코드를 작성한다.

env.getProperty("database.driver")

Last updated