'이게 왜 되지'와 '이게 왜 안되지'의 향연입니다. 벌써 4주가 흘렀네요. 어느새 꽤 추운 날씨가 되었습니다. 이번주는 주특기 입문주차가 끝나고 숙련주차가 시작되었습니다. Spring이 왜 좋은지, 왜 사용하는 지에 대해서 알아가고 있습니다.
DI Dependency Injection 의존성 주입
객체를 직접 생성하지 않고 외부에서 생성한 후 주입시키는 방법입니다. 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로 인터페이스를 사이에 둬서 클래스 레벨에서는 의존 관계가 고정되지 않도록합니다. 런타임 시에는 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해줍니다.
두 객체 간의 관계를 맺어주는 것을 의존성 주입이라고 합니다. 생성자 주입, 필드 주입, setter 주입 등 다양한 주입 방법이 있지만 스프링에서는 생성자 주입을 권합니다. 특이 케이스가 아닌 경우 생성자 주입을 사용한다고 합니다.
의존성이란 A가 변하면 그 영향이 B에 영향을 끼치는 것을 말합니다.
의존성 주입을 사용한다면 가독성이 높아질 뿐만 아니라 의존성이 줄어들어서 변경과 재사용이 용이해집니다.
관련 어노테이션에 대해서는 아래 포스팅을 참고해주시길 바랍니다.
제어의 역전 IoC Inversion of Control
Don't call us, We'll call you
스프링을 사용할 때 개발자가 Controller, Service 등 객체를 직접 구현하기는 하지만, 해당 객체들이 언제 호출되는 지는 걱정하지않아도 됩니다. 스프링 프레임워크가 알아서 해당 객체들을 생성하고, 메서드를 호출하고 소멸시킵니다.
스프링을 사용하기 전에는 main 함수를 써서 직접 실행을 제어했지만 스프링 프레임워크를 사용하면서 제어권이 스프링에 넘어가게 된 것입니다. 이를 제어의 역전, Inversion of Control이라고 말합니다.
IoC의 장점은 아래와 같습니다.
- 프로그램의 진행 흐름과 구현을 분리 할 수 있습니다.
- 개발자는 비지니스 로직에 집중할 수 있습니다.
- 객체간 의존성이 낮아집니다.
- 코드가 유연해집니다.
빈 Bean
스프링 프레임워크의 IoC가 관리하는 객체를 Bean 이라고 합니다.
빈이 생성되면 말 그대로 콩 모양 아이콘이 생깁니다.
빈은 @Bean, @Component, @Service, @Repository와 같은 어노테이션으로 생성 될 수 있으며 개발자가 직접 설정할 수도 있습니다. @Component를 상속받는 어노테이션들은 모두 빈을 등록할 수 있습니다.
개발자가 직접 빈 등록을 하려고 한다면 @Configuration 어노테이션을 사용합니다.
3주차 회고
할 일이 너무 많고 배워야하는 게 너무 많은데 다 못하고 있습니다. 새벽 늦게까지 공부를 한다고 해도 할 게 너무 많습니다. 그래도 이제는 CRUD의 원리와 기본 개념을 탑재하게 되었습니다.
JPA를 왜 사용하는지도 배우고,
CRUD를 구현하는 과제도 해보고,
자바 공부도 꾸준히 하고 있습니다.
여러가지를 하면서 한주가 순식간에 지나갔습니다.
알고리즘 공부를 하나도 못해서 큰일입니다.
다음 주에는 적어도 이틀에 한 문제는 풀려고 합니다.
4주차도 화이팅😎😎
'TIL' 카테고리의 다른 글
TIL 중요한 건 꺾이지 않는 마음 JWT 토큰 확인 코드 221206 (0) | 2022.12.06 |
---|---|
TIL 로그인 회원 가입 기능 구현 JWT 토큰 사용 221205 (0) | 2022.12.06 |
TIL Spring @Component @Autowired 어노테이션 제어의 역전 221203 (0) | 2022.12.03 |
TIL JPA 심화 영속성 컨텍스트 @Enumerated (feat. 꿈에서도 코딩)221202 (0) | 2022.12.03 |
TIL 자바 백엔드 공부 로드맵 (feat. 11월 회고) 221201 (0) | 2022.12.01 |