스프링: 표준 및 엔터프라이즈 자바 응용 프로그램을 신속하게 개발하는데 널리 사용되는 오픈 소스 프레임워크
스프링을 사용하는 이유?
스프링은 의존성 주입(Dependency injection, DI)이나 관점 지향 프로그래밍(Aspect Oriented Programming, AOP)과 같은 기능 뿐만 아니라 기본적으로 웹을 개발할 수 있는 웹 MVC 프레임워크도 함께 제공 → 스프링 MVC
1) 일반적인 자바 객체를 위한 POJO 지원
스프링은 별도의 API를 이용하여 애플리케이션 코드를 따로 작성하지 않는 정책을 쓰고 있으며 자바 서블릿 코드에서처럼 인터페이스를 반드시 구현해야 한다거나 HttpServlet 클래스를 상속하지 않아도 됨
→ 스프링은 일반적인 JAVA 언어와 꼭 필요한 API 외에는 특정 구현 기술에 종속되지 않으며, 특정 데이터베이스나 서버에 의존하지 않는 자바 클래스만으로 구성해도 프로그래밍 가능
→ POJO(Plain Old Java Object)
POJO의 장점
비즈니스 로직(business logic)이란?
- 업무에 필요한 데이터를 처리하는 애플리케이션의 일부로, 데이터 입력/수정/조회/보고서 처리 등을 수행하는 루틴, 즉 보이지 않는 곳에서 일어나는 각종 처리를 의미함
- 대게 클라이언트 프로그램은 사용자 인터페이스와 비즈니스 로직으로 구성되며, 서버 프로그램은 대부분 비즈니스 로직만으로 구성됨
2) 객체 간 결합도를 줄이는 의존성 주입 지원
객체 간 의존 관계를 관리하는 방법: 간단한 애너테이션만으로 처리 가능
- 생성자 의존성 주입
public class A { public B b; public A(B b) { this.b = b; } }
- Setter 메서드 의존성 주입
public class A { public B b; public void setB(B b) { this.b = b; } }
public class A {
public A() {
b = new B();
}
}
public interface B {
}
public class A {
public A() {
b = new B();
}
}
3) 공통 모듈을 재사용하는 AOP 지원
공통 관심사(cross-cutting concerns)
- 애플리케이션의 모듈은 대체로 자신의 핵심 기능 외에도 로깅이나 트랜잭션 관리, 보안 등 시스템 서비스를 수행함
- 이런 시스템 서비스는 시스템의 여러 컴포넌트와 관련되므로 이를 공통 관심사(cross-cutting concerns)라고 함
4) 일관성 있는 모듈의 트랜잭션 지원
트랜잭션이란?
- 쪼갤 수 없는 최소 단위의 작업
- 데이터 무결성과 일관성을 보장하는 필수 기법
- 즉, 어떤 작업 프로세스를 하나로 묶어 실행하다 작업이 하나라도 실패하면 모두 실패 처리하고, 전체 작업이 성공하면 성공으로 처리하는 논리적인 작업 묶음