[Spring Framework]
"Spring Framework는 Java애플리케이션 개발을 위한 포괄적인 인프라 지원을 제공하는 Java 플랫폼으로, 애플리케이션에 집중할 수 있도록 제반 사항들을 처리하는 역할을 한다."
- Core Container, Data Access/Integration, AoP, Web, Test 등 다수 모듈(개별적으로 완벽한 컴포넌트)로 구성된 응용 프로그램
출처 : https://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/overview.html
[종속성 주입(Dependency Injection) 및 제어 역전(IoC)]
개발 과정에서 비즈니스 로직을 담고 있는 DAO에서 수정이 빈번하게 발생하는데, DAO 수정시마다 수정 부분과 관련된 다른 클래스까지 모두 함께 바꿔야 하는 문제가 있다. 가령, DAO와 service가 객체를 인스턴스화 하여 hasing 관계를 가질 때, DAO 필드명, 리턴 값 등을 수정하면 DAO와 연동된 모든 단계에서 동일하게 변경 작업을 진행해야 한다.
특히, DAO dao=new DAOImpl(); 와 같이 DAO 실체 클래스를 코드로 직접 정의하는 과정에서 DAO 재사용성을 낮아진다.
[재사용성 높이는 방법]
1. 클래스 간에 생성자/setter로 hasing 관계 형성
- 가장 재사용성 낮음
2. 인터페이스로 컴포넌트화 시켜서 hasing관계 형성
-1번보다 느슨한 관계이지만 구상객체 명이 노출됨.
But, 실체 클래스명이 코드로 노출되는 한계 존재. ex) Hello hello= new HelloImpl(); >> HelloImpl() 클래스명이 코딩됨
3. 실체 클래스명을 코드에 노출시키지 않는다
- 컨테이너가 객체 생성을 하도록 넘기고, 코드로 객체 생성하지 않는다.
Spring에서는 Container에 객체 생성 권한을 위임함으로써 DAO를 수정하더라도 service에 영향을 최소화하여 재사용성을 높인다. 이처럼, 객체 생성 권한이 개발자에서 Container로 넘어가는 것을 제어의 역전(IoC,Inversion of Control)이라고 한다.
SpringFramework는 IoC(InversionofControl)로 서로 다른 구성 요소를 완벽하게 사용할 수 있는 애플리케이션으로 구성하는 방법을 사용한다.
https://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/overview.html
'Web Programming > Spring' 카테고리의 다른 글
[Spring] BeanNameViewResolver (0) | 2020.08.10 |
---|---|
[Spring] Annotation (0) | 2020.08.06 |
[Spring] Bean 설정문서 (0) | 2020.08.06 |
[Spring] My Batis - SQL (1) | 2020.08.05 |
[Spring] MyBatis Data Access (0) | 2020.08.04 |
댓글