1. 스프링의 역사
초기의 기업들은 자바의 표준 기술로 Enterprise Java Bean을 사용했다.
Rod Johnson은 EJB 없이도 충분히 고품질의 확장 가능한 애플리케이션을 개발할 수 있음을 보여주고, 30,000라인 이상의 기반 기술을 예제 코드로 선보이며 EJB의 문제점을 지적하는 책을 출간했다. BeanFactory, ApplicationContext, POJO, 제 어의 역전, 의존관계 주입 등 지금의 스프링 핵심 개념과 기반 코드가 들어가 있다. 출간 직후 Juergen Hoeller, Yann Caroff가 로드 존슨에게 오픈소스 프로젝트를 제안하였다.
스프링 이름은 전통적인 J2EE(EJB)라는 겨울을 넘어 새로운 시작이라는 뜻으로 지어졌다.
2. 스프링 프레임워크
- 핵심 기술: 스프링 DI 컨테이너, AOP, 이벤트, 기타
- 웹 기술: 스프링 MVC, 스프링 WebFlux
- 데이터 접근 기술: 트랜잭션, JDBC, ORM 지원, XML 지원
- 테스트: 스프링 기반 테스트 지원
- 언어: 코틀린, 그루비
3. 스프링 부트
- 스프링을 편리하게 사용할 수 있도록 지원
- Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
- 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
4. 좋은 객체 지향 프로그래밍?
★ 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크
(스프링=자바 언어 기반의 프레임워크, 자바 언어=객체 지향 언어)
- 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다.
- 객체 지향 특징 중 다형성
다형성(polymorphism)이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미한다. 자바 언어의 다형성을 활용해보자. 인터페이스를 '역할', 인터페이스를 구현한 클래스/구현 객체를 '구현' 이라고 두고 객체를 설계할 때 이 둘을 명확히 분리해준다. 객체 설계시 역할을 먼저 부여하고, 그 역할을 수행하는 구현 객체를 만든다. 이렇게 둘을 분리함으로써, 클라이언트는 대상의 역할만 알면 되고 구현 대상의 내부 구조를 몰라도 되며, 변경되어도 영향을 받지 않는다는 장점이 생긴다.
클라이언트를 '요청', 서버를 '응답' 이라고 두자. 수 많은 객체 클라이언트와 객체 서버는 서로 협력 관계를 가진다. 다형성의 본질은 클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있다는 것이다.
스프링은 다형성을 극대화해서 이용할 수 있게 도와준다. 스프링에서 이야기하는 제어의 역전(IoC), 의존관계 주입(DI)은 다형성을 활용해서 역할과 구현을 편리하게 다룰 수 있도록 지원한다.
인프런 강의) 김영한의 스프링 핵심 원리-기본편
'Java > spring' 카테고리의 다른 글
[자바 ORM 표준 JPA 프로그래밍] ch01 JPA 소개 (0) | 2022.10.02 |
---|---|
[스프링 기본] ch01 객체 지향 설계와 스프링-SOLID 원칙 (0) | 2022.05.26 |
[스프링 입문] ch07 AOP (0) | 2022.05.23 |
[스프링 입문] ch06 스프링 DB 접근 기술-스프링 데이터 JPA (0) | 2022.05.19 |
[스프링 입문] ch06 스프링 DB 접근 기술-JPA (0) | 2022.05.19 |
댓글