<토비의스프링> 8.1~8.4 스프링이란
by BFine이번장은 가볍게 쭉 읽어봤는데 뭔가 스프링의 역사? 를 보는 느낌이 든다
8.1 스프링 정의
a. 어플리케이션 프레임워크
- 특정계층이나 기술 업무 분야에 국한되지 않고 전영역을 포괄하는 프레임워크를 의미한다.
- 개발 전 과정을 빠르고 효율적으로 진행하는데에 목적을 둔다.
- 전 영역을 관통하는 일관된 프로그래밍 모델과 핵심기술을 바탕으로 필요를 채워줘야함
b. 경량급
- 코드가 지원하는 기술수준은 비슷해도 그것을 훨씬 빠르고 간편하게 만들수 있게 해서
생산성과 품질면에서 유리하다는 것을 의미한다. (기술 수준이 가볍다X)
8.2 스프링의 목적
a. 엔터프라이즈 개발의 복잡함
- 비지니스 로직과 기술적인 복잡함이 뒤섞여서 복잡함이 배로 가중되어버림
b. EJB
- 개발자가 로우레벨의 기술적인 복잡함에 신경쓰지 않고 비지니스 로직을 효과적으로 개발하게 하자
- EJB라는 환경과 스펙에 종속되는 코드로 만들어져야하는 문제점이 발생
c. 스프링
- 비침투적인 기술을 통해 성격이 다른 복잡함들을 깔끔하게 분리해줌
=> 상속을 줄이고 native 같은 분리한다는 의미인듯 하다?
- 서비스 추상화를 통해 기술의 복잡함을 인터페이스로 분리하고 세부기술에 대한 독립적인 인테페이스 적용
- AOP를 통해 비지니스 전후 경계에 대한 로직을 분리함
- 객체지향 설계기법을 잘 적용할 수 있도록 DI 같은 기술을 적용하도록 도와줌
- 모든 스프링의 기술과 전략은 객체지향의 자바를 극대화해서 사용할 수 있도록 돕는 것 이다.
8.3 POJO
a. 스프링의 핵심 : POJO
- 스프링의 주요기술 IoC/DI , AOP. PSA 은 POJO로 개발할수 있게 해주는 가능기술이라 부른다.
b. 조건
- 자바 언어와 꼭 필요한 API 외에는 종속되지 않아야 한다.
=> 객체지향설계의 자유로운 적용이 가능한 객체여야 POJO로 불릴 수 있다.
- 환경에 독립적이어야 한다. ex) 웹이라는 환경정보, 기술을 담은 클래스나 인터페이스를 사용하면 안됨
c. 장점
- 자동화된 테스트에 매우 유리하다.
- 객체지향적인 설계를 자유롭게 적용할 수 있다.
8.4 스프링의 기술
a. IoC/DI
- new 키워드로 생성해서 강한 결합을 쓰는 방법보다 나은 이유는?
=> 유연한 확장이 가능하게 위해서 (변경에는 닫혀있고 확장에는 열려있다.)
b. AOP
- 두가지 방법으로 구현
1. 다이나믹 프록시를 사용
2. AspectJ를 사용(바이트 코드 조작)
c. PSA
- 환경과 세부 기술의 변화에 관계없이 일관된 방식으로 기술에 접근할 수 있도록 해주는 기술
'개발서적 > 토비의스프링' 카테고리의 다른 글
<토비의스프링> 7.6.2~7.6.6 어노테이션 (0) | 2021.03.07 |
---|---|
<토비의스프링> 7.5~7.6.1 내장형 데이터베이스 (0) | 2021.02.20 |
<토비의스프링> 7.3~7.4 서비스 추상화 (0) | 2021.02.20 |
<토비의스프링> 7.1~7.2 SQL DAO 분리하기 (0) | 2021.02.20 |
<토비의스프링> 6.7~6.8 트랜잭션 어노테이션 (0) | 2021.02.20 |
블로그의 정보
57개월 BackEnd
BFine