스프링의 정의
스프링이란 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크이다. 프레임워크란 프로그램의 골격이 되는 기본 코드를 제공하고, 소프트웨어 개발을 간소화하기 위해 개발되었다. 개발자는 프레임워크를 기반으로 소스코드를 작성하여 소프트웨어를 완성시키면 된다.
또한 스프링은 EJB(Enterprise JavaBean)기반 개발에서 POJO(Plain Old Java Object) 기반 개발이 가능하게 해준다.
스프링의 특징
- 경량 컨테이너
스프링은 EJB와 같이 복잡한 순서를 거치지 않아도 간단하게 이용할 수 있다. 자바 객체를 직접 관리하며 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리한다. (만들어질 당시는 경량이지만 지금은 아니다.) - DI (Dependency Injection, 의존성 주입)
스프링은 의존성 주입(DI)을 지원한다. 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다. 객체 간의 결합을 느슨하게 해주는 스프링의 핵심 기술이다. - IoC(Inversion of Control, 제어역전)
스프링은 제어역전(IoC)을 지원한다. 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다. 객체 간의 결합을 약하게 해주므로 품질이 높아지고 유지보수 작업이 쉬워진다. - AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)
스프링은 관점 지향 프로그래밍(AOP)을 지원한다. 따라서 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능(CCC)의 경우 해당 기능을 분리하여 관리할 수 있다. - OCP(Open Closed Principle, 개방 폐쇄 원칙)
인터페이스를 통해 제공되는 확장 포인트는 확장을 위해 개방되어 있고, 인터페이스를 이용하는 클래스는 자신의 변화가 불필요하게 일어나지 않도록 굳게 폐쇄되어 있다.
스프링 왜 쓰는 가?
- 편리하게 MVC모델을 구현할 수 있다.
- 트랜잭션 처리가 쉬워진다.
- 사용자 인증과 권한을 주는 기능을 사용할 수 있다.
의존성 주입에 대한 포스팅
https://mintparc.tistory.com/132
관점 지향 프로그래밍에 대한 포스팅
https://mintparc.tistory.com/133
댓글