Back-end/JAVA,Spring

[JAVA]Spring properties 설정하기

cheersHena 2018. 9. 17. 15:36
반응형


Spring properties 설정하기 

.properties란?? 
응용 프로그램의 구성 가능한 파라미터들을 저장하기 위해 자바 관련 기술을 주로 사용하는 파일들을 위한 파일 확장자이다. 

1. PropertyPlcaeHolderconfigurer 로 설정파일 읽어오기

RootApplicationContext 영역에 아래와 같이 bean을 등록해주면 된다.
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
     <property name="location"  value="classpath:config.ini" />
     <property name="fileEncoding" value="UTF-8" />
</bean>

RootApplicationContext 영역에 bean을 설정했기에 같은 영역에 선언된 빈에서는 아래 코드를 사용해서 값을 가져올 수 있다.
@Value("${project.file.upload.location}")
private String saveLocation;

하지만 servlet.xml 영역에서는 해당 bean에 접근 할 수 없다.

2. property-placeholder 로 설정파일 읽어오기

RootApplicationContext 영역에 아래와 같이 bean을 등록해주면 된다.
<context:property-placeholder location="classpath:*config.ini" />

RootApplicationContext 영역에 bean을 설정했기에 같은 영역에 선언된 빈에서는 아래 코드를 사용해서 값을 가져올 수 있다.
@Value("${project.file.upload.location}")
private String saveLocation;

하지만 servlet.xml 영역에서는 해당 key에 접근 할 수 없다.
  • config.ini 의 key와 @Value에 적은 key가 일치하지 않으면 에러가 난다.

3. spring-util의 properties 로 설정파일 읽어오기

RootApplicationContext 영역에 아래와 같이 property을 등록해주면
<util:properties id="config" location="classpath:*config.ini" />

코드는 아래와 같이 사용하면 된다. 단, id를 적어주어야 한다.
@Value("#{config['project.file.upload.location']}")
private String saveLocation;

RootApplicationContext 영역에 설정(등록)했지만 이는 유틸리티로서 위 1,2보다 넓은 범위에서 사용 가능하다.
그러므로 servlet.xml 영역인 Controller에서 사용이 가능하다.
@Controller
public class NoticeController {
     
     @Value("#{config['project.context.path']}")
     private String contextRoot;


반응형