1. Spring 이란?
- JAVA의 웹 프레임워크로 JAVA 언어를 기반으로 사용한다. JAVA로 다양한 어플리케이션을 만들기 위한 프로그래밍 틀이라 할 수 있다.
- JAVA를 이용한 기술은 JSP, MyBatis, JPA 등 여러가지가 있는데, Spring은 이 기술들을 더 편하게 사용하기 위해 만들어졌다.
- 중복코드의 사용률을 줄여주고, 비즈니스 로직을 보다 간단하게 처리할 수 있다.
- 오픈소스를 좀더 효율적으로 가져다 쓰기 좋다.
- JAVA 기술들을 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임 워크이다.
2. 프레임 워크(Frame Work)란? - 기본적인건 만들어 줄테니 개발자가 알아서해 !
- 자주 쓰일 만한 기능들을 한데 모아 놓은 유틸(클래스)들의 집합이다.
- 프레임 워크는 어떠한 목적을 달성하기 위해 복잡하게 얽혀 있는 문제를 해결하기 위한 구조이자 약속이며, 소프트웨어 개발에 있어서 하나의 뼈대 역할을 한다.
- 라이브러리와 프레임워크를 헷갈리는 경우도 있는데, 보통 프레임워크라고 하면 클래스와 라이브러리가 합쳐진 형태라고 볼 수 있다.
- 메소드 및 클래스화, 즉 모듈화를 하는 이유 중 하나가 재사용성인데, 프레임워크는 이 재사용성을 큰 그룹 단위로 묶어주었다고 보면 된다. 재사용 가능한 수많은 클래스들과 라이브러리들을 융합한 채로 처음부터 제공해 주기 때문에, 여러 개의 표준을 만들지 않아도 돼서 개발자의 피곤함을 덜어준다.
3. Spring 주요 특징
- Spring은 개발을 더 쉽게 해주는 프로그램 틀이다. 개발을 더 쉽게 해주는 기술들이 Spring에 존재하는데, IoC, Di, AOP 등등이 있다.
1) IoC(Inversion of Control, 제어 반전) - 개발자가 실수할 수 있는 생명주기 관리를 대신한다.
- 개발자는 JAVA 코딩시 new 연산자, 인터페이스 호출, 데이터 클래스 호출 방식으로 객체를 생성하고 소멸시키는데,
IoC는 인스턴스 (객체)의 생성부터 소멸까지 객체 생명주기 관리를 개발자가 하는게 아닌 컨테이너가 대신 해주는 것을 말한다.
- 프로젝트의 규모가 커질수록 객체와 자원을 이용하는 방법이 더 복잡해지고 관리가 힘들어지는데. Spring의 IoC는 자동으로 관리해준다.
- 제어권이 개발자가 아닌 IoC에게 있으며 IoC가 개발자의 코드를 호출하여 그 코드로 생명주기를 제어하는 것이다.
2) DI(Dependency Injection, 의존성 주입)
- 프로그래밍에서 구성요소 간의 의존 관계가 소스코드 내부가 아닌 외부의 설정파일을 통해 정의되는 방식이다.
- 코드 재사용을 높여 소스코드를 다양한 곳에 사용할 수 있으며 모듈간의 결합도도 낮출 수 있다.
- JAVA에서 데이터를 저장하고 가져오는 기능을 외부의 Oracle Database를 사용할 수도 있고, JDBC, iBatis, JPA 등 다른 프레임 워크를 이용할수도 있다. 이때 Spring을 이용하면 그때마다 필요한 부분을 조절 하면서 적절한 상황에 필요한 기능을 해낼 수 있다.
3) AOP(Aspect Object Programming, 관점 지향 프로그래밍) - 재사용성 ↑
- 로깅, 트랜잭션, 보안 등 여러 모듈에서 공통적으로 사용하는 기능을 분리하여 관리 할 수 있다.
- 여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용성을 높여주는 프로그래밍 기법이다.
4) POJO(Plain Old Java Object) 방식 - 객체를 가볍게
- POJO는 Java EE를 사용하면서 해당 플랫폼에 종속되어 있는 무거운 객체들을 만드는 것에 반발하여 나타난 용어이다.
- 별도의 프레임 워크 없이 Java EE를 사용할 때에 비해 인터페이스를 직접 구현하거나 상속받을 필요가 없어 기존 라이브러리를 지원하기 용이하고, 객체가 가볍다.
- getter/setter를 가진 단순한 자바 오브젝트를 말한다.
'JAVA > SPRING' 카테고리의 다른 글
[JAVA] spring MVC @ModelAttribute 사용법 (0) | 2021.03.26 |
---|---|
spring form태그 readonly (0) | 2021.03.15 |
SPRING SECURITY - 기본 설정 (0) | 2021.02.18 |