<Spring framework 사용의 핵심 >

Dependency Injection 기능과 Transaction Management 기능

jdbc의 기능만으로는 서비스 메소드로 나누어 놓은 connection을 공용으로 관리할 수가 없다
(기업형 application에서는 사용자가 많아질수록 필연적으로 서비스 함수 요청이 많아지고 그때마다 호출된 jdbc의 connection이 많아지면 transaction의 관리가 불가능하기 때문에 spring의 transaction management 기능을 사용한다)


<Spring의 기본 덕목>


MVC model 처리할 때는 DI(dependency injection)
Transaction 처리할 때는 AOP
인증과 권한 처리할 때는 Servlet Filter


<느슨한 결합력과 인터페이스 그리고 DI>

java 객체지향에서 배우는 내용
인터페이스로 실제 필요에 의해 생성되는 서비스 객체의 이름을 감추고, 외부설정 파일(XML, Annotation) 등을 사용해 사용되는 서비스 객체를 모듈화 시킨다. 그렇게 오버라이드로 인한 소스 수정을 억제하면서 객체간의 결합력을 낮춰 모듈간의 재사용성(컴파일이 완료된 bin(.jar)파일로의 전환)을 용이하게 한다. 

ex)
인터페이스 참조변수 = new (implement 인터페이스 된 서비스객체(feat. 외부설정에 따라 달라지는))
- 외부설정만 수정하면 소스 수정 없이 상속 받아 오버라이드하여 사용할 수 있게된다

Spring의 DI(의존성주입=부품조립)은 이 "느슨한 결합력과 인터페이스"를 위한 작업을 도와준다
-인터페이스 결합시 필요한 설정 파일을 제공해주고, 객체를 결합시켜주는 역할을 한다(객체 생성 & 조립)


<DI>

결합력을 낮춰야 하기 때문에 객체 간에는 composition has a(생성자에서 다른 객체를 생성)하는 방식 보다 setter를 사용하는 association has a 방식을 사용하며 이 클래스 내부의 부품 클래스를 DI에서는 dependency라고 한다)

injection 종류

setter를 이용한 setter injection
B b = new B();
A a = new A();
a.setB(b)
ex. 조립컴

construction을 이용한 construction injection
B b = new B();
A a = new A(b);
ex. 브랜드컴

위의 과정을 Spring의 DI가 대신해준다
DI = 종속성(의존성)주입 = 부품을 조립해준다


<IoC 컨테이너>

위의 부품(dependency)을 저장하고 조립해주는데 필요한 컨테이너다

XML, Annotation 등으로 필요한 목록을 작성해서 지시서를 만들면 주문받은 부품을 담을 그릇이 필요한데

그 부품들을 저장해서 담는 그릇이며 조립까지 해주는데, 기존의 import(큰 객체를 생성하면 필요한 작은 객체들까지 생성자에 의해 알아서 생성되는 방식)가 아닌 Inversion of Control(제어의역전)으로 조각 부품부터 만들어 큰 부품으로 조립해준다고 해서 IoC 컨테이너라 한다

 

'Development > Java' 카테고리의 다른 글

DI, AOP #2  (0) 2022.08.25
Maven 사용법  (0) 2022.08.24
List String Array, Transaction, Overload #12  (0) 2022.08.23
파일 등록과 사용 #11  (0) 2022.08.22
Servlet / Jsp admin page #10  (0) 2022.08.22

+ Recent posts