반응형
1. 폴더생성(소스폴더로) 후 properties 파일 작성
: key 와 value 형태
key값을 작성할때 층위를 나워서 키 값을 부여할 수 있음.
2 . properties에 저장된 value 값 꺼내오기
1) 해당 클래스에 @PropertySource 어노테이션 작성
@Configuration
@PropertySource("prdouct-info.properties")
public class ContextConfiguration {
2) Bean 등록과 @Valuefmf 어노테이션을 사용하여 값 꺼내오기
- 치환자(placeholder) 문법을 이용하여 key를 입려하면 value에 해당하는 값을 꺼낼 수 있음
- ': ' 뒤의 값은 값을 읽어오지 못하는 경우 사용할 대체 값
- 내부에 공백을 사용하면 값을 읽어오지 못함
- @Value("@{properties의 key값}) or @Value("@{properties의 key값 : vale})
@Configuration
@PropertySource("prdouct-info.properties")
public class ContextConfiguration {
@Value("${bread.carpbread.name:붕어빵}")
private String carpBreadName;
@Value("${bread.carpbread.price:0}")
private int carpBreadPrice;
@Value("${beverage.milk.name}")
private String milkName;
@Value("${beverage.milk.price}")
private int milkPrice;
@Value("${beverage.milk.capacity}")
private int milkCapacity;
//bean등록
@Bean
public Product carpBread() {
return new Bread(carpBreadName, carpBreadPrice, new java.util.Date());
}
@Bean
public Product milk() {
return new Beverage(milkName, milkPrice, milkCapacity);
}
생성자로 값을 꺼내올 수도 있다.
@Bean
public Product water(@Value("${beverage.water.name}") String waterName,
@Value("${beverage.milk.price}") int waterPrice,
@Value("${beverage.milk.capacity}") int waterCapacity) {
return new Beverage(waterName,waterPrice, waterCapacity);
}
@Bean
@Scope("prototype")
public ShoppingCart cart() {
return new ShoppingCart();
}
}
3. 출력하기
public class Application {
public static void main(String[] args) {
ApplicationContext context = new AnnotationConfigApplicationContext(ContextConfiguration.class);
Product carpBread = context.getBean("carpBread", Bread.class);
Product milk = context.getBean("milk", Beverage.class);
Product water = context.getBean("water", Beverage.class);
ShoppingCart cart1 = context.getBean("cart", ShoppingCart.class);
cart1.addItem(carpBread);
cart1.addItem(milk);
System.out.println("cart1에 담긴 내용 : " + cart1.getItem());
ShoppingCart cart2 = context.getBean("cart", ShoppingCart.class);
cart2.addItem(water);
System.out.println("cart2에 담긴 내용 : " + cart2.getItem());
/* 두 카트의 hashCode 출력 */
System.out.println("cart1의 hashCode : " + cart1.hashCode());
System.out.println("cart2의 hashCode : " + cart2.hashCode());
}
}
반응형
'프로그래밍 > Spring & Spring boot' 카테고리의 다른 글
12 Spring : bean 초기화, 소멸 설정하기(init-method , ditory-method) (0) | 2022.09.02 |
---|---|
11 Spring : MessageSource를 통한 다국어 처리하는 방법 (1) | 2022.09.02 |
09 Spring : @Scope("prototype") (0) | 2022.09.01 |
08 Spring : annotation 의존성 주입 정리 (0) | 2022.09.01 |
07 Spring : Annotation 을 통해 의존성 주입하기/ @Autowired (0) | 2022.09.01 |