스프링 프레임워크
-> 설정사항이 많음
순서를 중요하게 기억!
프레임워크
-> SW관점에서 어플리케이션의 전반적인 구조, 코드를 제공해주는 것
-> 유지보수 과정에서 일관성이 망가짐
장점 : 유지보수에 들어가는 비용이 절감
유지보수 과정에서 아키텍처의 변형이 발생하지 않음 == 일관성 유지
개발자는 비즈니스 로직만 구현하면됨 -> 개발 시간 감소
개발자의 역량이 획일화
스프링 프레임워크
별도의 비용 XXX
다른 프레임워크와 연동이 용이
IoC와 AOP를 지원하는 경량(POJO)의 컨테이너 프레임워크
장점 :
- 경량(간단함)
POJO를 사용
- 컨테이너
객체의 생성 및 객체 관리를 담당
Servlet 컨테이너를 지금까지 사용해왔었음 -> 톰캣, 일반적으로 서번안에 포함되어 배포함
=> 스프링도 일종의 컨테이너! 객체간의 의존관계를 관리
- IoC (제어의 역행 Inversion of Control)
지금까지는 객체간의 결합을 개발자가 관리 -> 높은 결합도
"낮은 결합도" 유지를 위해 컨테이너가 대신처리하게함!
의존관계를 변경해야 할때, 자바코드를 수정 ex) DAO의 메소드 인자를 VO로 사용
IoC가 적용되면 컨테이너가 객체를 생성하므로, 자바코드가 변경 XX
- AOP(Aspect Oriented Programming 관점지향 프로그래밍) 방법론
지금까지는 객체지향 프로그래밍(OOP)으로, 로직을 프로그래밍하고 있었음!
주 업무 + 부가적인 업무
핵심로직 계좌이체 입출금 이자계산
부가적 로직 로직----------------------------
보안----------------------------
트랜잭션------------------------
협업불리, 유지보수 어려움, 재사용 불리
모든 로직을 핵심로직, 공통 로직으로 분리 == 응집도가 높아짐!
사용자 -- web.xml --> 톰캣 <-> 디스패처, Controller -- 포워딩 --> View
Controller 변경될때, 변경될 코드를 줄여나가는 것 == 결합도를 낮추는것 => 스프링을 사용하는 목표!
설정파일로 조작할 수 있다! -> 의존성 주입(DI)
[ IoC 컨테이너 ]
서블릿은 자바로 구성된 클래스
객체화 == 인스턴스화
1. 서블릿 객체를 누가 만들어줬을까?
2. doGet() 메소드를 어떻게 호출함?
=> Servlet Container
개발자 : 서블릿 클래스 제작, web.xml 설정파일 작성
1) web.xml 설정파일들을 loading(적재)
2) Servlet Container 준비
3) Client -- *.do GET --> 서블릿컨테이너
4) 설정파일을 보고, 매핑된 서블릿 클래스를 찾아서 객체를 생성
5) doGet() 메소드를 호출, 결과를 다시 전송(response)
[ 낮은 결합도 ]
1. 높은 결합도의 코드
결합도 coupling -> 유지보수가 어려움
2. 결합도를 낮춰보자 -> 1
설계를 통한 상속관계 정의 (인터페이스)
형변환 -> 다형성(Polymorpism)
: 객체를 교체하는데에 용이
3. 결합도를 낮춰보자 -> 2
BeanFactory를 이용
: 디자인 패턴의 일종
클라이언트가 사용할 객체 생성 코드를 캡슐화
Person - Phone의 결합을 낮춰줌
-> 클라이언트는 필요한 객체를 BeanFactory에 요청
클라이언트가 사용할 객체를 생성하여 반환해주는것은 BeanFactory!
'Spring' 카테고리의 다른 글
| 생성자 인젝션 (0) | 2021.12.05 |
|---|---|
| applicationContext.xml 의 역할 (0) | 2021.12.05 |
| Spring 설치, 적용, 사용 (0) | 2021.09.28 |
