외부설정(2)

오진현·2023년 3월 21일
0

Spring

목록 보기
5/7

@ConfigurationProperties

외부 설정을 묶어서 하나의 Bean으로 등록

application.properties

dean.name = dean
dean.age = ${random.int(0,100)}
dean.fullname = ${dean.name} Oh

DeanProperties.class

@Getter
@Setter
@Component
@ConfigurationProperties("dean") //프로퍼티명과 동일
public class DeanProperties {

    private String name;
    private int age;
    private String fullname;

}

ApplicationRunner.class

@Component 
public class ApplicationRunner implements org.springframework.boot.ApplicationRunner {

    @Autowired // 빈 주입
    DeanProperties deanProperties;


    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("age-property :" + deanProperties.getAge());
          System.out.println("name-property :" + deanProperties.getName());
        System.out.println("fullname-property :" + deanProperties.getFullname());
    }
}

참고

@SpringBootApplication
//@EnableConfigurationProperties(DeanProperties.class) 이미 @SpringBootApplication안에 포함 되어있음
public class DeanohApplication {
...
..

결과

장점

  • TypeSafety
  • Valuation
  • 융통성있는 바인딩 1. context-path 2. context_path 3. CONTEXTPATH
  • 타입 컨버전
  • 시간정보 @DurationUnit
  • Validation @Validated, @NotNULL (JSR-303)

@Value

  • SpEL 을 사용할수 있지만..
  • 나머지 기능은 사용 불가..

Third-party Configuration

흔한경우는 아님..
Application.class

@SpringBootApplication
public class DeanohApplication {

	@ConfigurationProperties("server")
	@Bean
	public ServerProperties serverProperties(){
		return new ServerProperties();
	}

	public static void main(String[] args) {
		
		SpringApplication app = new SpringApplication(DeanohApplication.class);
		app.run(args);
	}
}

profile
s나야

0개의 댓글