본문 바로가기

Java/Spring Framework

Framework란

반응형

1. 프레임 워크란?

디자인패턴 + 라이브러리

 

프레임워크는 어플리케이션을 개발할 때 사용하는 '틀'입니다.

디자인패턴과 라이브러리들을 모아서 프로그램 형태로 만들어 둔 것으로

프레임워크를 통해 여러 기능들을 사용할 수 있고 이 덕분에 원하는 부분에 집중하여 개발이 가능해집니다.

 

- 디자인 패턴(Design Pattern)?

기존에 개발된 건들 중 설계가 잘된 케이스들에 이름, 목적, 용도, 구현 방법 등을 정리한 것이 '디자인 패턴'입니다.

디자인 패턴을 활용하여 설계하면 보다 효율적으로 설계가 가능합니다.

 

-라이브러리(Library)?

어떤 기능을 다른 사람들도 사용할 수 있게 만들어 놓은 것으로 jar등의 형태로 제공하는 것입니다.

 

2. 스프링 프레임워크 (Spring Framework)

Spring Framework란 Aspect Oriented Programming(AOP), Portable Service Abstraction(PSA), Inversion of Control/ Dependency Injection(IoC/DI) 기술을 바탕으로 Plain Old Java Object 를 지향하는 경량의 오픈소스 프레임워크입니다. 

자바 기반의 어플리케이션 프레임워크로 웹 어플리케이션 서버 사이드 개발을 비롯한 많은 분야에서 사용되고 있습니다. 전자정부 프레임워크도 스프링 기반으로 되어 있습니다.

 

- 스프링의 주된 기능

  • DI (Dependency Injection) : 의존성 주입
  • IoC (Inversion of Control) : 제어의 역행
  • AOP (Aspect-Oriented Programming) : 관점지향 프로그래밍
  • PSA : 이동가능한 서비스를 위한 추상화
  • POJO : 순수한 자바 객체

IoC

객체의 생성 및 관계 설정을 개발자가 직접하지 않고 대신 프레임워크가 알아서 처리하는 것을 의미합니다.

 

DI

IoC의 실제 구현 모습입니다. 소비객체가 사용하는 서비스로직을 제공하는 객체(의존 객체)를 직접 개발자가 선택하지 않고 소비객체를 호출하는 다른 요청객체(Spring)가 선택해서 소비객체에게 서비스로직을 제공하는 객체를 알려주는 방식입니다.

 

스프링은 개발자 대신 객체를 관리하기 위해 컨테이너를 갖고 있습니다. 이를 빈 컨테이너라고 부릅니다. 

개발자는 빈 컨테이너에 미리 클래스를 등록해 놓고 사용하고자 하는 클래스를 스프링에게 미리 알려주어야합니다. 이런 작업을 빈 설정이라 부르며 그 방식으로 3가지가 있습니다.

1. XML 설정

2. Annotation

3. Java-config

 

이렇게 객체 관리를 프레임워크에 맡겨서 사용하는지 그 이유를 살펴보겠습니다.

 

객체관리 패러다임의 변화

프로젝트 생성을 통해 그 필요성을 살펴보겠습니다.

Spring Legacy Project를 다음과 같이 생성합니다.

프로젝트 이름: spring-basic-ioc-di

템플릿 : Spring MVC Project

패키지 : com.example.ioc1

해당 프로젝트를 보시면 아시다시피 개발자가 클래스 내부에서 직접 객체를 생성하여 사용하고 있습니다. 능동적인 객체관리 프로그래밍 방식이라 볼 수 있습니다. 

OrderManager에게서 HyundaiMaker를 분리하면 OrderManager는 제대로 동작하지 않습니다. 이렇게 클래스 내부에서 객체관리를 직접 처리하면 연관된 클래스들은 강결합 관계가 됩니다. 

 

Money, Car 클래스는 데이터를 보관, 전송하기 위한 Value Object 입니다. 

이렇게 상태 값이 변경되는 클래스를 Mutable Class라고 합니다.

OlderManager 가 HyundaiMaker를 사용하기 위해 멤버변수로 갖고 있으므로 둘은 Has-A 관계입니다.

즉 OrderManager는 HyundaiMaker에 의존합니다.

 

결합도는 하나의 클래스가 변경될 때 다른 클래스가 얼마나 수정되어야하는지를 갖고 구분합니다. 

결합도가 강결합이면 전략객체 B를 변경하고자 할 때 클래스 A의 코드 변화가 있는 것이고 약결합이면 코드의 변화가 없는 것입니다.

 

 

 

Bean

스프링 컨테이너에 의해 자바 객체가 만들어지게 되면 이 객체를 스프링 빈이라 부릅니다.

스프링 빈과 자바 일반 객체와의 차이점은 없습니다. 스프링 빈은 스프링 컨테이너에서 만들어지는 객체일 뿐입니다.

 

 

 

반응형

'Java > Spring Framework' 카테고리의 다른 글

Spring MVC로 RESTful API 서비스 구현  (0) 2020.03.04
Spring 개발 환경 설정  (0) 2020.03.03
Framework란 2 -Spring boot 기초  (0) 2020.03.03
Spring Project _ Day2(github에 코드 올리기)  (0) 2019.12.25
Spring Project _ Day1  (0) 2019.12.21