티스토리 뷰
스프링
스프링이란 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크다.
애플리케이션 프레임워크
- 특정 계층이나, 기술, 업무 분야에 국한되지 않고 애플리케이션 전 영역을 포괄하는 범용적인 프레임워크
- 프로그래밍 모델을 일관되게 적용해서 엔터프라이즈 애플리케이션 전 계층과 전 영역에 전략과 기능을 제공
- 애플리케이션 개발의 전 과정을 빠르고 편리하며 효율적으로 진행하는 것이 목표
경량급
- 불필요하게 무겁지 않다.
- 단순한 개발툴과 기본적인 개발환경으로도 애플리케이션을 개발할 수 있다.
- 코드와 개발 과정이 단순해짐
자바 엔터프라이즈 개발을 편하게
- 로우레벨 기술에 많은 신경을 쓰지 않으면서, 핵심인 비즈니스 로직을 빠르고 효과적으로 구현할 수 있다.
- 애플리케이션의 로직 개발에 더 집중할 수 있다.
- 엔터프라이즈 개발의 기술적인 복잡한과 그에 따른 수고를 제거해준다.
오픈소스
- 소스가 모두에게 공개되고, 특별한 라이선스를 취득할 필요없이 자유롭게 이용할 수 있다.
스프링의 목적
엔터프라이즈 시스템 개발이 복잡한 이유
- 기술적인 제약조건과 요구사항이 늘어난다. (순수한 비즈니스 로직 외에 기술적으로 고려할 사항이 많다.)
- 엔터프라이즈 시스템이 관여하는 업무 비율이 커져 구현해야 할 비즈니스 로직의 복잡함이 증가
- 변화의 속도가 빨라짐 > 유지보수, 추가개발
- 비즈니스 로직 코드와 기술 코드의 혼합으로 복잡해짐
스프링 전략
- 기술에 대한 접근방식이 일관성 없고, 특정 환경에 종속되는 문제> 서비스 추상화로 해결
- 기술적인 처리를 담당하는 코드가 성격이 다른 코드와 섞임 > AOP를 사용해서 기술관련 코드를 깔끔하게 분리
- DI를 통해 기술적인 복잡함을 효과적으로 다룰 수 있게 해준다. 객체지향적인 설계, 프로그래밍이 가능하게 도와준다.
POJO, Ioc/DI, AOP
POJO 조건
- 특정 규약과 환경에 종속되지 않는다.
- 객체지향적인 원리에 충실해야한다.
- 장점
- 코드가 깔끔해진다.
- 테스트에 유리하다.
IOC / DI
- 유연한 확장이 가능하다. (OCP)
- 실제 의존하는 대상이 가진 핵심기능을 DI 설정을 통해 변경할 수 있다.
- 런타임에 동적으로 핵심기능을 변경할 수 있다.
- 부가기능을 쉽게 추가할 수 있다.
- 클라이언트가 사용하는 인터페이스와 실제 오브젝트 사이에 인터페이스가 일치하지 않을때 DI를 이용해서 해결할 수 있다.
- 프록시, 템플릿 / 콜백 패턴
- 오브젝트의 스코프를 제어할 수 있다.
- 쉽게 테스트 할 수 있게 도와준다.
AOP 적용기법
- 다이내믹 프록시 사용 (만들기 쉽지만, 부가기능을 부여할 수 있는 곳이 메서드 호출하는 곳으로 한정적이다.)
- AspectJ 사용
PSA
- 환경과 세부 기술의 변화에 관계없이 일관된 방식으로 기술에 접근할 수 있게 해준다.
- 다양한 기술에 대한 서비스 추상화 기능 제공
Reference
책 : 토비의 스프링 3.1 Vol.1 스프링의 이해와 원리 (저 이일민)
'book_note > 토비의 스프링' 카테고리의 다른 글
토비의 스프링 VOL.2 CH1(1) (0) | 2021.07.11 |
---|---|
토비의 스프링 VOL.1 CH9 (0) | 2021.07.11 |
토비의 스프링 VOL.1 CH7(3) (0) | 2021.07.10 |
토비의 스프링 VOL.1 CH7(2) (0) | 2021.07.10 |
토비의 스프링 VOL.1 CH7(1) (0) | 2021.07.10 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 빌더 패턴
- Spring
- spring boot
- MSSQL
- @Modifying
- default interface
- 다이내믹 프록시
- SpringBoot
- 스프링 부트 테스트
- 토비의 스프링
- JavaScript
- 자바의 정석
- Nullable
- ASP.NET
- C# 문법
- jQuery
- 스프링
- 영속성
- JpaRepository
- orphanRemoval
- OWIN
- DataAnnotation
- 스프링MVC
- Effective Java
- 준영속
- 고아 객체
- JPA
- uploadfive
- c#
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
글 보관함