안그래보이지만 개발자/백엔드

[Spring] 프로퍼티 빈 설정하고 프로퍼티 파일에서 값 가져오기

자네트 2021. 10. 16. 12:08
반응형

* 내가 해본 것 까먹지 않기 위한 기록

스샷 없음 주의

 

이래저래 바뀌는 값을 보통 properties파일에 관리할 것이다.

스프링에서 프로퍼티 파일을 읽은 후

@Value 어노테이션을 이용해 편하게 갖고와본다.

 

프로퍼티 파일의 위치는 빌드 패스 위치만 잘 설정되어 있다면 어디든 큰 상관은 아마 없을듯.

 

* Spring 5.3.5

openjdk 1.8

 

프로퍼티 파일은 이렇다고 하자.

 

application.properties

test.value=jeanette

 

그러면 적당히 설정하는 곳에다가 프로퍼티를 읽어오는 빈을 만든다.

나는 스프링 WebMvcConfigurer를 구현한 클래스 안에다 만들어주었다.

 

 

@EnableWebMvc
public class SpringMvcConfig implements WebMvcConfigurer{

	//다른 세팅은 생략
	//바로 프로퍼티 빈 설정
	@Bean(name="thisIsName")
	public PropertiesFactoryBean properties() {
		PropertiesFactoryBean bean = new PropertiesFactoryBean();
    		bean.setLocation(new ClassPathResource("application.properties"));
    
    	return bean;
	}
}

 

빈 이름 설정은 원래 안해도 되어야 하는 것 같은데

나는 왜인지 모르게(??) 이름이 없으니 잘 못 가져왔다.

나는 데드라인에 쫓기는 사람이므로 원인 파악은 나중에 하겠다...

 

아무튼 이름 설정해주고

이제 프로퍼티를 가져올 위치로 가보자

나는 컨트롤러에서 가져오려고 했다

 

 

@RestController
public class TestController{

	@Value("#{thisIsName['test.value']}")
    	private String testValue;
    
    ...
}

 

@Value 어노테이션 부분을 보면 된다

빈에 이름을 지정해주지 않았을 때와는 사용법이 약간 다르니 잘 따라하기 바람

thisIsName 부분에 빈 네임을 지정하고

[''] 안에 프로퍼티 이름을 넣으면 됨

그럼 짜잔

testValue 안에 jeanette라는 값이 잘 들어갈 거임

 

 


 

반응형