프로그래밍/Spring & Spring boot

10 Spring : properties 사용

pupu91 2022. 9. 2. 16:07
반응형

 

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());
		
	}

}
반응형