📗 스프링 Spring

[스프링/Spring] Properties

핑크빛연어 2021. 5. 14. 14:41

 

Properties

애플리케이션을 개발할 때 프로그램 실행 중 절대 변하지 않는 값들을 사용할 때 properties 파일에 작성하고 가져다 사용할 수 있도록 제공하는 설정파일

 

 

 

1. 프로젝트에서 properties 파일 만들기

 

WebContent/WEB-INF 아래에만 만들면 상관없지만 properties 파일의 종류가 여러개 일 수 있기 때문에 properties 폴더를 생성 후 해당 폴더에 properties 파일을 만들었습니다.

 

properties 폴더 마우스 오른쪽버튼 클릭 > New > File 클릭

 

파일명.properties 로 파일명을 지정하고 Finish 버튼 클릭

(저는 data1.properties 로 지정하였습니다.)

 

생성한 data1.properties 파일에 

aaa.a1 = 100

aaa.a2 = 문자열

 

로 입력하였습니다.

 

그러나 문자는 한글 그대로가 아닌 유니코드의 형태로 자동 저장됩니다.

그래서 property Editor 를 설치하여 유니코드 형태가 아닌 한글로 확인할 수 있도록 해줍니다.

 

 

 

2. Property Editor 설치

 

상단 메뉴바 Help > Install New Software... 클릭

 

Install 화면에서 Add.. 클릭

 

Name 은 편한대로 지정하고 (저는 Property Editor 로 하였습니다.)

Location 은 http://propedit.sourceforge.jp/eclipse/updates 로 입력해주세요.

입력 후 Add 버튼 클릭

 

조금 기다려줍니다!

 

목록들이 뜨면 PropertiesEditor 에 체크 후 Next 버튼 클릭!

 

Next 버튼 클릭

 

약관 동의 체크 후 Finish 버튼 클릭

 

또 잠시 기다려줍니다.

 

Security Warning 팝업이 표시되면 Install anyway 버튼 클릭

 

이클립스 재시작을 위해 Restart Now 클릭

 

이클립스 재시작 후 data1.properties 파일을 닫고 다시 열면 이제 한글로 확인할 수 있습니다..!

 

 

 

3. Controller 에서 properties 사용하기

 

data1.properties

########## data1.properties ##########

aaa.a1 = 100
aaa.a2 = 문자열1

bbb.b1 = 200
bbb.b2 = 문자열2

 

data2.properties

########## data2.properties ##########

ccc.c1 = 300
ccc.c2 = 문자열3 

ddd.d1 = 400
ddd.d2 = 문자열4 

 

 

Bear27Controller.java

 

사용할 properties 파일 지정하기

@PropertySource 또는 @PropertySources 를 사용하여 3가지 방법으로 properties 파일을 지정할 수 있습니다.

@PropertySource("/WEB-INF/properties/data1.properties")
@PropertySource("/WEB-INF/properties/data2.properties")
@PropertySource(value = {
    "/WEB-INF/properties/data1.properties",
    "/WEB-INF/properties/data2.properties"
})
@PropertySources({
	@PropertySource("/WEB-INF/properties/data1.properties"),
	@PropertySource("/WEB-INF/properties/data2.properties")
})

 

properties 파일에 작성한 값 주입받기

@Value("${aaa.a1}")
private int a1;

@Value("${aaa.a2}")
private String a2;

 

전체 Controller Source

package com.my.spring.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.annotation.PropertySources;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/bear27")

//@PropertySource("/WEB-INF/properties/data1.properties")
//@PropertySource("/WEB-INF/properties/data2.properties")

//@PropertySource(value = {
//		"/WEB-INF/properties/data1.properties",
//		"/WEB-INF/properties/data2.properties"
//})

@PropertySources({
	@PropertySource("/WEB-INF/properties/data1.properties"),
	@PropertySource("/WEB-INF/properties/data2.properties")
})

public class Bear27Controller {
	
	private String TAG = "===== "+Bear27Controller.class.getSimpleName()+" >> ";
	
	@Value("${aaa.a1}")
	private int a1;
	
	@Value("${aaa.a2}")
	private String a2;
	
	@Value("${bbb.b1}")
	private String b1;
	
	@Value("${bbb.b2}")
	private String b2;
	
	@Value("${ccc.c1}")
	private String c1;
	
	@Value("${ccc.c2}")
	private String c2;

	@Value("${ddd.d1}")
	private String d1;
	
	@Value("${ddd.d2}")
	private String d2;
	
	
	@GetMapping("/test01")
	public String test01() {
		
		System.out.printf(TAG+"test01() - aaa.a1 : %s\n", a1);
		System.out.printf(TAG+"test01() - aaa.a2 : %s\n", a2);
		System.out.printf(TAG+"test01() - bbb.b1 : %s\n", b1);
		System.out.printf(TAG+"test01() - bbb.b2 : %s\n", b2);
		
		System.out.printf(TAG+"test01() - ccc.c1 : %s\n", c1);
		System.out.printf(TAG+"test01() - ccc.c2 : %s\n", c2);
		System.out.printf(TAG+"test01() - ddd.d1 : %s\n", d1);
		System.out.printf(TAG+"test01() - ddd.d2 : %s\n", d2);
		
		return "bear27/test01";
	}
}

 

 

 

 

 

728x90
반응형