Spring 이란?
Java 언어 기반의 웹 프레임워크로 Java로 다양한 어플리케이션을 만들기 위한 프로그래밍 툴
JPA, Mybatis 등의 Java를 이용한 기술들을 더 쉽게 사용할 수 있도록 해주는 오픈소스 프레임워크
자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크
> 프레임워크?
Spring Framework 특징
1. IoC (Inversion of control, 제어 반전)
제어권이 개발자가 아닌 프레임워크에 있으며 지원하는 형식에 맞게 개발자가 프로그램을 작성하면 프레임워크가 개발자의 코드를 호출해 필요한 객체를 생성, 소멸시키며 생명주기를 관리한다.
2. DI (Dependency Injection, 의존성 주입)
각 요소 또는 서비스 사이에 의존성이 존재하는 경우 스프링에서 의존 관계를 정의하고 외부 파일을 통해 설정해준다.
설정 파일을 분리하기 때문에 유지보수가 용이하고 각 구성 요소간 결합도가 낮아진다.
3. POJO (Plain Old Java Object) 방식
Java EE를 사용하면 플랫폼에 종속된 무거운 객체를 만들어야만 했는데,
그럴 필요 없이 기존의 일반적인 Java 코드를 이용한 프로그래밍이 가능하다.
직접 인터페이스를 구현하거나 상속받을 필요가 없어 기존 라이브러리 지원이 용이하고, 객체가 가볍다.
4. AOP (Aspect Object Programming, 관점 지향 프로그래밍)
관점에 따라 각각의 기능을 분리하여 프로그래밍 가능하다.
예를 들어, 로깅 / 트랜잭션 / 보안 등 여러 모듈에서 공통적으로 가용하는 기능을 분리하여 관리할 수 있다.
기능 구분을 통해 코드의 재사용성이 높아진다.
Spring Framework 장단점
장점
개발에 필요한 구조를 이미 코드로 만들어놓아 개발이 편리하고 개발 시간이 단축된다.
단점
정해진 구조가 있기 때문에 프레임워크에 있는 코드를 습득하고 이해하는 시간이 필요하다.
프레임워크의 형식에 맞춰야 하므로 자유롭고 유연한 개발에 한계가 있다.
References
https://velog.io/@alghrksl/Spring-Spring-%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80