-
- Java의 웹 프레임워크로 Java 언어를 기반으로 사용한다.
- JAVA로 다양한 어플리케이션을 만들기 위한 프로그래밍 틀이라 할 수 있다.
- 과거와 비교해 지금은 Java의 활용도가 높아졌고 따라서 프로젝트 규모도 커졌다.
- JAVA의 활용도가 높아지면서, JAVA를 이용한 기술이 JSP, Mybatis, JPA 등의 기술이 생겨났다.
- Spring은 이 기술들을 더 편하게 사용하기 위해 만들어진 것이다.
- Spring은 다른 사람의 코드를 참조하기 쉽고 편리한 구조로 앞서 말한 기술들을 더 쉽게 사용해주는 오픈소스 프레임워크이다.
- 결론적으로 Spring이란 Java기술들을 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임 워크이다.
-
과거 라이브러리와 프레임워크를 같이 보며 프레임 워크가 무엇인지 알아본 적 있다.
프레임워크란, 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것이다.
프레임워크는 라이브러리의 컬렉션이라고 할 수 있다.그렇다면 라이브러리와 프레임워크의 차이점은 뭘까?
프레임워크는 작업(work)의 구조(frame)가 정해져 있는 라이브러리라고 볼 수 있다.
단, '프레임워크가 원하는 방식'대로 다양한 기능을 제공한다.
앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크가 알아서 관리하며,
개발자는 서비스별로 다른 부분만 "프레임워크가 정해준 방식대로" 클래스, 메서드 등에 구현해두면 된다.라이브러리는 상대적으로 F/W(framework)에 비해 자유도가 더 높고,
프레임워크는 정해진 틀이있는 구조 내에서 프로그래밍을 하기 때문에 라이브러리에 비해 상대적으로 더 빠른 개발 효율성을 가지고 있다. -
스프링 프레임워크는 4가지 특징이 있는데, IoC, DI, AOP, POJO방식 이렇게 존재한다.
하나씩 살펴보자.-
-
자바 객체의 라이프사이클을 스프링 컨테이너가 직접 관리하며, 스프링 컨테이너로부터 필요한 객체를 얻어 올 수 있다.
-
개발자는 JAVA 코딩시 new 연산자, 인터페이스 호출, 데이터 클래스 호출 방식으로 객체를 생성, 소멸시킨다. 여기서 IoC란 객체의 생성부터 소멸까지 개발자가 아닌 스프링컨테이너가 대신 해주는 것이다.
-
제어권이 개발자가 아닌 IoC에 있으며, IoC가 개발자의 코드를 호출해 필요한 객체를 생성, 소멸 하며 생명주기를 관리하는 것이다.
-
-
-
각 계층이나 서비스들 사이 또는 객체들 사이에 의존성이 존재할 경우 스프링 프레임워크가 서로를 연결시켜준다. 이는 클래스들 사이에 약한 결합을 가능케 한다.
-
프로그램에서 구성 요소의 의존 관계가 소스코드 내부가 아닌 외부의 설정 파일을 통해 정의 되는 방식이다.
-
코드 간의 재사용을 높이고, 소스코드를 다양한 곳에 사용하며 모듈 간의 결합도를 낮출 수 있다.
-
대표적으로 라이브러리나 API, 프레임워크를 연동 할 때 연결하는 소스코드를 직접 작성하는게 아닌 외부 파일을 연결해 불러오는 방식이다.
-
-
-
트랜잭션, 로깅, 보안 등 여러 모듈에서 공통적으로 지원하는 기능을 분리하여 사용할 수 있다.
-
각각의 클래스가 있다고 가정하자. 각 클래스들은 서로 코드와 기능들이 중복되는 부분이 많다. 코드가 중복될 경우 실용성과 가독성 및 개발 속도에 좋지 않다. 중복된 코드를 최대한 배제하는 방법은 중복되는 기능들을 전부 빼놓은 뒤 그 기능이 필요할때만 호출하여 쓰면 훨씬 효율성이 좋다.
-
즉, AOP는 여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용성을 높여주는 프로그래밍 기법이다.
-
-
-
POJO는 Java EE를 사용하면서 해당 플랫폼에 종속되어 있는 무거운 객체들을 만드는 것에 반발하여 나타난 용어이다.
-
별도의 프레임 워크 없이 Java EE를 사용할 때에 비해 인터페이스를 직접 구현하거나 상속받을 필요가 없어 기존 라이브러리를 지원하기 용이하고, 객체가 가볍다.
-
즉, getter/setter를 가진 단순한 자바 오브젝트를 말한다.
-
-
-
여기서 Core Container란 스프링 프레임워크의 핵심이며 스프링 빈의 생명 주기를 관리하고 Spring 프레임워크의 특징인 IoC와 DI(의존성 주입)을 제공해주는 역할을 한다. Spring 프레임워크에서 굉장히 중요한 역할을 하기때문에 확실히 공부할 필요가 있어보인다.
-
스프링 모듈 기능 1. spring-core 스프링의 핵심인 DI(Dependency Injection)와 IoC(Inversion of Control)를 제공 2. spring-aop AOP구현 기능제공 3. spring-jdbc 데이터베이스를 쉽게(적은 양의 코드) 다룰수있는기능 제공 4. spring-tx 스프링에서 제공하는 트랜잭션 관련기능 제공 5. spring-webmvc 스프링에서 제공하는 컨트롤러(Controller)와 뷰(View)를 이용한 스프링MVC 구현기능제공 스프링 프레임워크에서 제공하고 있는 모듈(라이브러리)을 사용하려면, 모듈에 대한 의존설정을 개발 프로젝트에 XML 파일등을 이용해서 개발자가 직접 하면 된다.