본문 바로가기
개발일지/WIL

[WIL] 항해99 (9기) - 3주차 회고

by 깸뽀 2022. 10. 9.
728x90

9월 30일(금)~10월 06일(목)

스프링 프레임워크 및 JPA 사용

 

❓ IoC 와 DI

IoC란 Inversion of Control의 약자로 말 그대로 풀면 "제어의 역전" 이라는 의미이다.

작성한 메서드나 객체의 호출을 개발자가 결정하는 것이 아닌 외부, 즉 스프링 프레임워크에서 이루어지게 되는데 이것을 제어의 역전(IoC)라고 한다.

이러한 객체의 호출을 스프링 프레임워크에서 결정하게 되면 객체의 생명주기(Lifecycle) 관리를 스프링 프레임워크에서 도맡아서 하기 때문에 개발자는 온전히 비즈니스 로직 작성에 집중할 수 있는 환경을 갖게 된다.

객체 호출에 대한 제어권이 프레임워크에 있기 때문에 DI(의존성 주입)이 가능하게 된다.

 

DI란 Dependency Injection의 약자로 "의존성 주입"이라는 의미이다.

DI는 스프링 프레임워크가 제공하는 특별한 기능으로 객체를 직접 생성하여 사용하는 게 아닌, 스프링 프레임워크에게 주입받아 사용하는 기능이다.

이러한 스프링의 의존성 주입은 세 가지 방법이 있다.

스프링 프레임워크에서도 생성자 주입을 권장하고 있다.

생성자 주입의 경우 객체를 생성할 때 딱 1번만 호출이 되고 이후에 호출이 되는 일이 없기 때문에 불변하게(final) 설계가 가능하다. 그리고 생성자 주입의 경우 순환 참조 오류를 방지할 수 있다.

 

 


 

코드 중복사용을 막기위해서, 또 코드의 가독성을 높이기 위해서 스프링이 제공하는 기능을 사용하여 편하게 개발할 수 있다. 또 프로그래머는 해당 프로젝트에 최적화 된 비즈니스 로직과 관련한 변수왐 메소드를 개발하는데 집중할 수 있을 것 같다. 

 

또 기존에는 mapper를 사용해 SQL로 데이터를 주고받는 방식을 더 많이 사용해서 JPA의 개념을 이해하고 익히는데 조금 어렵게 느껴졌다. 하지만 계속 사용하다보니 쿼리문이 없어도 ORM방식으로 데이터를 찾아주고 작업처리도 해주는걸 느끼니 오히려 JPA가 더 좋아졌다.

 

스프링을 공부하면서 개념에 대해 더 깊이 파고들어봐야겠다는 생각이 절로 들었다

프레임워크가 대부분의 기능을 사용할 수 있게 제공을 해 주지만 그 개념을 모르고 사용한다는 것은 더 어려운 개발을 하는 것과 같다고 느꼈기 때문에 앞으로도 부지런히 익히고 써먹어봐야겠다!

728x90

댓글