스프링이란?
- 자바 언어 기반의 프레임워크
- 자바 언어의 가장 큰 특징 - 객체 지향 프로그래밍(OOP)
- 객체 지향적인(OCP, DIP) 애플리케이션을 개발할 수 있게 도와주는 자바 기반 프레임워크
- 과거에 Java EE의 API 중 하나인 EJB(Enterprise JavaBeans)를 사용하면 EJB에 종속되어서 EJB 스타일로 개발을 할 수 밖에 없었다 - 객체 지향의 장점을 잃어버린다.
스프링의 주요 특징
- POJO(Plain Old Java Object) 기반의 구성
- **DI(Dependency Injection, 의존성 주입)**을 통한 객체 간의 관계 구성
- AOP(Aspect Oriented Programming) 지원
- 편리한 MVC 구조
- WAS에 독립적인 개발 환경
객체 지향 프로그래밍(Object-Oriented Programming)
- 객체들의 모임
- 객체들 간에 메시지를 주고받고, 데이터를 처리할 수 있다. (협력)
- 객체 지향 프로그래밍은 객체를 설계할 때 **역할(인터페이스)**과 **구현(클래스)**으로 구분하여 단순하고, 유연하며 변경이 용이하게 만든다. - 다형성(Polymorphism) 사용으로 유지 보수 용이
- 하나의 인터페이스를 안정적으로 잘 설계한다면 그 인터페이스를 통해서 클래스를 유연하며 변경이 용이하게 만들 수 있다.
좋은 객체 지향 설계의 5가지 원칙(SOLID)
- SRP: 단일 책임 원칙(single responsibility principle)
하나의 클래스는 하나의 책임만 가져야 한다
- 하나의 책임을 구분하는 기준은 변경이 있을 때 파급 효과가 적어야 한다