목표 : 동적으로 Property 값을 받아 오기 위해 Property마다 값을 지정해주고, 그 property를 불러오기. DB정보를 hibernate에 set할때 property로 가져와서 쓰게끔
PrppertySource를 Spring 에 추가하기 위해서는 Environment 인 @Configuration 클래스와 함께 사용된다.
@PropertySource 사용 예
@Configuration
@PropertySource("classpath:/com/myco/app.properties")
public class AppConfig{
@Autowired
Environment env;
@Bean
public TestBean testBean(){
TestBean testBean = new TestBean();
testBean,setName(env.getProperty("testbean.name"));
return testBean;
}
}
환경 객체는 구성 클래스에 @Autowired 되어 TestBean 객체를 채울 때 사요오딥니다. 위의 구서에서 testBean.getName() 을 호출하면 "myTestBean"이 반환됩니다.
${...} 자리 표시자 <bean>및 @value 주석 해결
실습 예
@Configuration
@PropertySource("classpath:static/properties/common.properties")
public class AppConfig{
}
- @PropertySource 어노테이션에 common.properties의 위치를 넣어주면, Enviroment객체에 프로퍼티 값이 자동으로 주입된다.
my.name = lhj
my.age = 25
my.status = sad
common.properties에 주입할 데이터를 properties형태로 생성.
@Component
public class EnvUser{
@Autowired
Environment env;
@PostConstruct
void init(){
System.out.println(environment.getProperty("my.name"));
System.out.println(environment.getProperty("my.phone","012-3456-7890")); //없으면 default값
System.out.println(environment.getProperty("my.age", Integer.class)); //int형으로 자동 캐스팅
System.out.println(environment.getProperty("my.weight", Integer.class, 50)); //없으면 default값
try{
env.getRequiredProperty("my.money"); //없을 경우 에러
}catch(IllegalStateException E){
System.out.println("에러 발생");
}
System.out.println(env.containsProperty("my.name")); //프로퍼티 존재값 boolean값으로
}
}
>Environment를 autowired한 후 getProperty를 통해서 프로퍼티값을 확인 할 수 있다.
결과
lhj
012-3456-7890
25
50
에러 발생
true
환경 변수값을주입할 수 있다.
참고 :