0.1.1 스프링이란 무엇인가?
- 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크
💡 스프링을 사용하기 위해서는 스프링 컨테이너를 다루는 방법과 스프링 컨테이너가 애플리케이션 오브젝트를 이용할 수 있도록 하는 설정정보를 작성할 수 있어야 한다.
💡 스프링의 모든 기술을 JavaEE에 기반을 두고 있다.
0.1.2 스프링 컨테이너
- 스프링은 스프링 컨테이너, 애플리케이션 컨텍스트라 불리는 스프링 런타임 제공
- 스프링 컨테이너는 설정정보를 참고로 해서 애플리케이션을 구성하는 오브젝트를 생성하고 관리
- 스프링 컨테이너는 독립적으로 동작할 수 있지만, 웹 모듈에서 동작하는 서비스나 서블릿을 등록하여 사용
0.1.3 스프링의 핵심 개념 세 가지
- Ioc/DI(Inversion of Control/Dependency Injection)
- 객체지향 설계 원칙과 디자인 패턴의 핵심 원리
- 서비스 추상화
- 기술과 환경에 종속되지 않도록 추상 계층을 두는 방법
- AOP(Aspect Oriented Programming)
- 부가기능을 독립적으로 모듈화. 깔끔한 코드 유지
💡 스프링은 방대한 API를 제공하여 “일관된” 방식으로 코드를 짤 수 있게함.
0.1.3 스프링의 장점
- 단순함(simplicity)
- 일관된 방식으로 단순성 제공
- Java가 복잡해지면서 잃어버린 객체지향의 특징을 살릴수 있음
- 유연성(flexibility)
- 많은 서드파티 프레임워크의 지원을 받아 유연함
0.1.4 스프링 개발 철학
- 항상 프레임워크 기반의 접근 방법을 사용하라
0.1.5 스프링을 공부할 때 지켜야 하는 방법
- 스프링을 일관된 방식으로 이해할 수 있어야 함
- 스프링은 폭넓은 접근 방법을 제공하므로, 남들이 만들어 놓은 예제를 가져다 사용하지 말고 직접 어떤 스타일 및 서드파티를 사용할 것인지 고민해야 함
- 실제 애플리케이션 개발에 어떤 식으로 적용해야 하는지 공부해야 함
💡 스프링은 특정 아키텍처에 제한되지 않는다. 특정 기업은 스프링을 기반으로 제작물에 맞는 프레임워크를 개발하여 사용하고 있음.
0.1.6 스프링 3.0의 달라진 기능
- Java 5와 JavaEE 6
- 스프링 표현식 언어(SpEL)
- 스프링 공식 표형식 언어
- 자바 코드를 이용한 DI 설정과 DIJ(JSR-330)
- XML이 아닌 Java Code로 DI 설정 가능
- @Configration, @Bean 등의 애노테이션을 부여하여 DI 설정정보로 이용할 수 있음
- @Inject와 Provider 같은 자바 표준 DI 애노테이션을 이용한 DI 설정 지원
- OXM
- 오브젝트와 XML 문서의 상호변환 지원하는 자바 기술에 대한 서비스 추상화 모듈
- @MVC와 REST
- 웹 프레젠테이션 계층을 편리하게 개발 지원
- 내장형 DB 지원
- Derby, HSQL, H2에 대한 내장형 DB 지원기능 추가
- Converter, ConversionService, Formatter
- 기존에 사용되던 PropertyEditor를 대신할 수 있는 Converter와 ConversionService 타입 변환 API 추가
- 웹 환경에 특화된 Formatter 제공
0.1.7 스프링 3.1에 추가된 새로운 기능
- 강화된 자바 코드를 이용한 빈 설정
- 기존에 XML로 작성했던 스프링 설정 정보를 3.1에서는 자바 코드로 대체 가능
- 런타임 환경 추상화
- 빈 설정을 효과적으로 관리 가능
- JPA 지원 확장과 하이터네이트 4 지원
- 새로운 DispatcherServlet 전략과 플래시 맵
- DispatcherServlet 전략의 일부가 새롭게 설계된 전략으로 대체
- Post/Redirect/Get 패턴에 사용할 수 있는 플래시 맵 기능 추가
- 캐시 추상화
- AOP를 이용한 메소드 레벨의 캐시 추상화 기능 추가
'토비의 스프링 정리' 카테고리의 다른 글
토비의 스프링 - 1.5 스프링의 IoC (0) | 2022.09.26 |
---|---|
토비의 스프링 - 1.4 제어의 역전(IoC) (0) | 2022.09.26 |
토비의 스프링 - 1.3 DAO의 확장 (0) | 2022.09.26 |
토비의 스프링 - 1.2 DAO의 분리 (0) | 2022.09.26 |
토비의 스프링 - 1.1 초난감 DAO (0) | 2022.09.26 |