전문가를 위한 스프링 5(Pro Spring 5) - Ch 1. 스프링 소개
1.1 스프링이란?
- Spring은 Java Application 개발을 위한 경량 Framework이다.
- Apache Struts와 같은 단순 Web App 개발뿐만 아니라 다양한 형태의 Java Application 개발이 가능하다.
- 기존 App 코드에 최소한의 영향을 준다.(경량)
1.1.1 스프링 프레임워크의 발전 과정
- Spring 0.9 버전
- Bean, AOP, JDBC, 추상 Transaction 지원
- Spring 1.X 버전
- Spring Core, Context, Dao, ORM, AOP, WEB, WEB MVC
- Spring 2.X 버전
- DTD 아닌 XML 스키마 구성지원
- @Transactional, @AspectJ 등 annotation 지원
- @Component, @Repository, @Service, @Controller 지원
- Spring Context는 Core 모듈에 포함, WEB 관련 모듈은 하나로 표시
- Spring 3.X 버전
- @RequestHeaders, @async, @Profile 등 annotation 기능 지원
- SpEL 도입 및 Hiberante 4, RestTemplate 지원
- MVC namespace와 Java Config 이용하여 URL 패턴 제외하는 기능
- Gradle 기반 빌드 시스템 도입
- Spring 4.X 버전
- OpenJDK 8 지원
- Groovy 구문을 통한 빈 정의 DSL
- WebSocket, SockJS 및 STOMP 메세징 지원
- Spring 5.X 버전
- Java 8 기반 개발 / Java 11 지원(공식) / LTS Java 17 릴리스 지원
- 웹 및 코어 모듈을 반응형 프로그래밍 모델에 맞게 개선
1.1.2 제어 역전과 의존성 주입
- IoC(Inversion of Control) : 제어 역전 (흐름 변경)/ 컴포넌트 간의 의존성 생성과 관리를 외부에서 수행
- DI(Dependency Injection) : 의존성 주입 / 객체 직접 생성이 아닌 외부에서 생성 후 제공
- Foo 클래스가 Bar 클래스를 사용하는 경우
- 전통적 방식 : Foo 클래스 내부에서 new Bar() 하거나 팩토리 클래스로 인스턴스 생성
- DI 방식 : Runtime에 외부 프로세스(Spring)가 Foo에게 Bar 인스턴스를 제공(의존성 주입)
- Crosscuttiong concerns에 대해 AOP와 같은 기능 사용 가능
- DI와 관련해 Spring은 인스턴스 컨테이너 역할
1.1.3 의존성 주입의 발전 과정
- 접착 코드 감소
- 의존 관계를 줄여 코드 양을 줄일 수 있다.
- 자동 JNDI 룩업과 원격 리소스의 자동 프록시 기능을 이해 단순화 가능
- App 구성 단순화
- 단일 저장소에서 공통 의존성을 관리
- 테스트 편의성 향상
- 기존엔 DAO를 Mock으로 변경이 어려워 테스트 난이도 있음
- DI를 통해 테스트용 DAO Mock 구현체를 만들어 사용 가능
- 좋은 App 설계를 도출
1.1.4 기타 제공 기능
- 자바 9
- AspectJ
- SpEL
- Validation
- Data Access(표준 JDBC)
- OXM(Object/XML 매핑)
- Transaction Mgmt.
- JEE 단순화 및 연동
- 웹 티어의 MVC (JSP, JSTL, Thymeleaf 등)
- WebSocket
- Remoting
- Job 스케줄링
- 동적 스크립트 언어 지원(Groovy, BeanShell 등)
- 단순 예외 처리
반응형
1.2 스프링 프로젝트
- J2EE Design and Development에서 시작됨
- 스프링 커뮤니티 활성화
- Spring IDE(Spring Tool Suite) 젝공
- Spring Securiy System
- Spring Boot (스타터 패키지를 이용한 손쉬운 환경 구성)
- Spring Batch, Integration
1.3 스프링의 대안
- JBoss Seam Framework
- Google Guice
- PicoContainer
- JEE 7 Container
반응형
'IT > Spring' 카테고리의 다른 글
[Spring] 스프링 핵심 원리 - 기본편 (1) (0) | 2023.01.09 |
---|---|
[Spring][전문가를 위한 스프링 5] CH2. 스프링 시작하기 (0) | 2022.08.15 |
[Spring] Intellij에서 Spring + Maven 시작하기 (Mac) (0) | 2022.07.14 |
[Spring][Error] The dependencies of some of the beans in the application context form a cycle (0) | 2022.07.10 |
[Java][Error] java.nio.charset.MalformedInputException: Input length = 1 (0) | 2022.07.10 |
댓글