본문 바로가기

SPRING

의존성 주입 1

현재 스프링 공부를 위해

자바 웹 개발 워크북-구멍가게 코딩단 

 

위 책을 읽고 있다.

 

스프링 공부에 앞서 Eclipse 의 Dynamic Web Project 에 해당하는 웹 프로젝트를 간단히 복습(MVC, PRG, Lombok과 Log4j2 사용법, 데이터베이스 연결, CRUD 테스트 등) 한 후 스프링 공부를 시작했다.

 

스프링 챕터에 들어오고 나서 가장 처음 나오는 말이 '의존성주입(Dependency Injection - 이하 DI)'인데 국비학원 수업을 들을 때에도 중요하다고 여러번 강조하셨다.

 

하지만 꼼꼼히 공부하지 않은 나는 '의존성을 가진 객체의 주입을 스프링이 알아서 해준다~' 정도로만 알고 넘어갔다. 당장 구현할 때는 그 이상의 지식이 없어도 구현이 가능 했다. 하지만 지금은 다르다 나는 취업하고 싶기 때문에 파고 들어야만 한다.

 

아래는 책에서 알려준 DI에 대한 내용.

 

스프링이 객체지향 구조를 설계할 때 받아들인 개념은 '의존성 주입'이라는 사상입니다. 의존성 주입은 어떻게 하면 '객체와 객체 간의 관계를 더 유연하게 유지할것인가?'에 대한 고민으로 객체의 생성과 관계를 효과적으로 분리할 수 있는 방법에 대한 고민입니다.

이전 예제들에서 모든 컨트롤러들은 TodoService 혹은 MemberService 와 같은 서비스 객체를 이용해야만 합니다. 이 경우 컨트롤러는 서비스 객체에 의존적 이라고 표현합니다.

즉 의존성이란 하나의 객체가 자신이 해야 하는 일을 하기 위해서 다른 객체의 도움이 필수적인 관계를 의미합니다.

과거에는 의존성을 해결하기 위해 컨트롤러에서 직접 서비스 객체를 생성하거나 앞의 예제들과 같이 하나의 객체만을 생성해서 활용하는 등의 다양한 패턴을 설계해서 적용해 왔는데 스프링 프레임 워크는 바로 이런 점을 프레임워크 자체에서 지원하고 있습니다.

 

위 내용에서 '객체와 객체 관계를 더 유연하게 유지할것인가?' 이 부분에 꽂혔다. 책을 따라가다 보니 인터페이스를 이용한 느슨한 결합에 대한 내용이 나왔다.

 

SampleDAO 와 이를 구현한 SampleDAOImpl, 그리고 SampleService 를 예로 들어 설명 했었는데, 이전과 달라진 부분이 있었다. 

 

스프링 없이 구현할때는 Service 객체를 위해 enum 을 사용했었는데 스프링에서는 <bean> 등록을 하고 class 로 구현되어 있었다. 

기존 예제에서 enum 을 사용한것은 싱글톤을 위해서라고 이해를 했고, 스프링에서 <bean>등록도 비슷한 이유로 이해를 했다. 그런데 enum과 스프링에서의 bean 등록 전부 대충만 알고 정확하게 이해를 못한 상태다. 그래서 DI 에 대한 공부를 하기 전 enum과 interface, 스프링의 bean을 먼저 정리해보겠다.

 

'SPRING' 카테고리의 다른 글

하루종일 화가났던 Querydsl gradle 설정 오류에 대하여..  (0) 2024.07.22
(spring)Assert Class  (0) 2024.07.14
(Junit5)Assertions Class  (1) 2024.07.08
(Junit4)Assert Class  (0) 2024.07.08
(Java)assert  (0) 2024.07.04