@Configuration
을 선언한 클래스를 예시로 들어본다.
잘못된 예시
@Configuration
public class Config {
private static final String ADDRESS = "서울시";
public Config() {
this.ADDRESS = "서울시 강남구";
}
좋은 예시
properties를 주입하여 위의 코드를 변경하였다
application.yml
address: '서울시 강남구'
@Configuration
public class Config {
@Value("${address")
private String address
생성자를 통해 리소스를 주입하면 TestCode
작성시 Injection
하기 편하다.
public class PhonePatternChecker {
private final String pattern;
public PhonePatternChecker(String pattern) {
this.pattern = pattern;
}
public boolean isValid(String phone) { ... }
}
각 나라마다 전화번호 패턴이 다를 수 있다.
이렇게 다국어를 처리하게 됐을 때 변경여지가 있는 pattern을 외부주입으로 받으면 손쉽게 다른국가에 대한 PhonePatternChecker
로 교체할 수 있다.
DI
는 아주아주 중요하다. 클래스 내부에 직접 객체를 생성하는 방식은 의존받는 객체에 의존성이 너무 높다. 외부에서 객체의 하위클래스를 교체하여 확장성을 높이거나 테스트코드를 작성하기 쉽게 해주는 등 객체지향설계가 가능하게 해준다. Spring
개발자라면 DI
의 장점을 꼭 이해하고 넘어가는게 좋다.