스프링 공부를 처음시작하면
스프링의 특징에 대해 공부를 제일 먼저 할 것이다!
나 역시 스프링을 처음 접하면서
크게 4가지 특징을 달달달 외웠다 ^^
1. 경량 컨테이너
2. 제어 역행
3. 의존성 주입
4. 관점지향 프로그래밍
단순히 코드 몇 줄만 외우고
제대로 이해를 못 한 탓에 아직도 어디선가 설명해 달라고 하면 설명을 못하고
이러한 원칙들이 적용이 된 건지 쉽게 알아보기 어렵다...
이게 바로 가짜 개발자가 아닌가 하고.. 다시 공부하려 한다!
개발 공부는 끝이 없다고 하던데 3년 차가 되어서 느끼고 있다 (= 2년은 놀았다는 소리)
일단!
여기서 가장 이해가 안 되는 의존성 주입과 제어의 역행에 대해 서술하듯이 적어보겠다.
일단 제어의 역전에서의 제어의 의미는 '관리'이고
역전의 의미는 '외부에서 관리하는 것'이다.
그리고 의존성 주입은 직접 생성해서 사용하는 게 아니라
외부에서 인스턴스를 생성해서 주입한다는 의미이다.
스프링에서는 빈에 등록된 객체를 @Autowired를 통해 의존성을 주입해 준다.
@Autowired 사용방법으로는 필드 주입, setter 주입, 생성자 주입 등 세 가지의 방법이 있는데
생성자 주입이 가장 추천하는 방법이다.
둘을 구분하자고 하면 IoC는 원칙이고, DI는 디자인 패턴이라고 이해하면 쉽다.
보통의 예시에서 말하고자 하는 바는
필드값 등으로 내부에서 선택하는 게 아니라
외부에서 받은 값으로 선택되는 코드를 보여준다.
코드는 마구 찍어내는건 누구나 할 수 있다..
누가 더 나은 코드 이냐가 정말 중요한거같다.
10년 후에도 꼭 개발자이길 바란다.