KyungHwan's etc.

스프링프레임워크 용어 간단히 정리 본문

Java/스프링프레임워크

스프링프레임워크 용어 간단히 정리

KyungHwan_0 2018. 5. 31. 17:20

스프링프레임워크 용어 간단히 정리



IOC(Inversion of Control)

Ioc는 ‘역제어’ 라는 의미

기존에 자바기반으로 어플리케이션을 개발 할 때 자바 객체를 생성하고 서로간의 의존 관계를 연결시키는 작업에 대한 제어권은 보통 개발되는 어플리케이션에 있었다.

But 서블릿 컨테이너,EJB 컨테이너에게 제어권이 넘어가서 객체의 생명주기가

컨테이너가 전담 => 객채의 제어권이 바뀌었다.

DI(Dependency Injection)

각 클래스 사이의 의존관계를 빈 설정(Been Definition)정보를 바탕으로 컨테이너가 자동적으로 연걸해주는 것을 말한다.

컨테이너가 의존관계를 자동적으로 연결시켜주기 때문에 개발자들이 컨테이너 API를 이용하여 의존관계에 필요가 없게 되므로 컨테이너 API에 종속되드 것을 줄일수 있다.

설정 정보(Configuration Metadata)

Spiring IOC Container는 설정 정보(Configuration Metadata)필요로 한다.

  • 스프링 ioc 컨테이너가 객체간의 종속성을 이어줄수 있는 필요한 정보를 제공 한다.

  • 일반적으로 XML 형태로 작성된다.

  • XML형대가 아닌 어노테이션 (JAVA Anntation)을 이용하여도 설정 가능하다.

Beens

Spring IOC Container는 다수의 been 들을 관리한다. Container는 설정정보를 사용하여 been 들을 생성한다.

Bean 이름(Naming beans)

모든 bean은 하나 이상의 id를 가져야 하며, 각각의 id는 container안에서 단 하나만 존재해야 한다. 일반적으로 대부분의 bean은 하나의 id를 가지지만, 별명(alias)를 사용하여 둘 이상의 id를 가질 수도 있다.

모든 bean 정의는 객체화를 위해 실제 Java Class가 필요하다.

XML 설정에서는 'class' attribute를 통해 Java Class를 설정한다. 대부분의 경우 Container는 bean를 객체화하기 위해서 Java의 'new' 연산자를 사용한다. 또는 특수한 경우, static 메소드를 사용할 수도 있다. 본 문서는 생성자를 이용한 객체화만을 설명한다.

ex =>


<bean id="exampleBean" class="example.ExampleBean"/>

<bean name="anotherExample" class="examples.ExampleBeanTwo"/>

AOP(Asepect Orineted Programming:AOP)=관점지향 프로그래밍

  • 개발 프로그래밍언어는 프로그램개발을 위해 고유한 관심사 분리 패러다임이 필요하다.

  • 객체지향프로그래밍의 많은 장점에도 불구하고, 다수의 객체들에 분산되어 중복적으로 존재하는 공통간심사가 존재하여, 프로그램을 복잡하게하고, 코드의 변경을 어렵게 한다.

  • AOP는 핵심 관심사를 분리하여, 프로그램모듈화를 향상시키는 프로그래밍

  • 공통프로그램 영역에 핵심관심사를 엮어서 기능을 처리한다.

관점(Aspect)

관점(Aspect)은 프로그램의 핵심 관심사에 걸쳐 적용되는 공통 프로그램 영역을 의미한다. 예를 들면 로깅, 인증, 권한확인, 트랜잭션은 비지니스 기능 구현시에 공통적으로 적용되는 요소이며 하나의 관점으로 정의될 수 있다.

핵심 관심사(Core concern)

핵심 관심사(Core concern)는 프로그램을 작성하려는 핵심 가치와 목적이 드러난 관심 영역으로 보통 핵심 비지니스 기능에 해당한다.

횡단 관심사(Cross-cutting concern)

횡단 관심사(Cross-cutting concern)는 핵심 관심에 영향을 주는 프로그램의 영역으로, 로깅과 트랜잭션, 인증처리와 같은 시스템 공통 처리 영역이 해당된다.

Aspect: 공통기능

  • Advice: Aspect의 기능자체

  • Jointpoint: Advice를 적용해야 되는부분(ex, 필드 메소드 )(스프링에서는 메소드만 해당)

  • Pointcut: Jointpoint의 부분으로 실제로 Advice가 적용된 부분

  • Waving: Advice를 핵심기능에 적용하는 행위

Client->Proxy-> Target

프록시

대상 객체에 advice 가 적용된후 객체

대상객체

충고(advice)를 받는 객체.

핵심 코드를 관점으로 어느시점에 공통기능을 추가하여 사용할 것인가!!!

관점(Asecet)

  • 공통기능

결합점(Join Point)

  • 공통기능이 적용되는곳

포인트컷(Pointcut)

  • 공통기능에서 쓰는 결합점에서 실제로 공통기능이 적용된 부분

충고(Advice)

  • 실제적인 공통기능

  • 실제 구현체로 결합점에 삽입되어 동작할수 있는 코드 이다.

Before advice: joinpoint 전에 수행되는 advice

After returning advice: joinpoint가 성공적으로 리턴된 후에 동작하는 advice

After throwing advice: 예외가 발생하여 joinpoint가 빠져나갈때 수행되는 advice

After (finally) advice: join point를 빠져나가는(정상적이거나 예외적인 반환) 방법에 상관없이 수행되는 advice

Around advice: joinpoint 전, 후에 수행되는 advice

엮기(Weaving)

  • 공통기능을 적용하는 행위

  • 컴파일 시 엮기

  • 클래스 로딩시 엮기

  • 런타임 엮기

MVC(Model-View-Controller)

  • Model:어플리케이션의 데이터와 비즈니스 로직을 담는 객체

  • View: Model의 정보를 사용자에게 표시한다. 하나의 Model을 다양한 View에서 사용 할 수 있다.

  • Controller:Model과 View의 중계역할을 한다. 사용자의 요청을 받아 Model에 변경된 상태를 반영하고, 응답을 위한 View를 선택한다.

MVC패턴은 UI코드와 비즈니스 코드를 분리함으로써 종속성을 줄이고, 재사용성을 높이고 보다 쉬운 변경이 가능하도록 한다.

Spring MVC(Model-View-Controller)의 핵심 Component

DispatcherServlet

Spring MVC Framework의 Front Controller, 웹요청과 응답의 Life Cycle을 주관한다.

**HandlerMapping**

웹요청시 해당 URL을 어떤 Controller가 처리할지 결정한다.

Controller

비지니스 로직을 수행하고 결과 데이터를 ModelAndView에 반영한다.

**ModelAndVie**

Controller가 수행 결과를 반영하는 Model 데이터 객체와 이동할 페이지 정보(또는 View객체)로 이루어져 있다.

**ViewResolver**

어떤 View를 선택할지 결정한다.

View

결과 데이터인 Model 객체를 display한다.

DispatcherServlet

  • 유일한 Front Controller인 DispatcherServlet은 Spring MVC의 핵심 요소이다.

  • DispatcherServlet은 Controller로 향하는 모든 웹요청의 진입점이며, 웹요청을 처리하며, 결과 데이터를 Client에게 응답 한다.

  • DispatcherServlet은 Spring MVC의 웹요청 Life Cycle을 주관한다 할 수 있다.

web.xml에 DispatcherServlet 설정

contextConfigLocation 설정

HandlerMapping

  • DispatcherServlet에 Client로부터 Http Request가 들어오면 HandlerMapping은 요청처리를 담당할 Controller를 mapping 한다.

  • Spring MVC는 interface인 HandlerMapping의 구현 클래스도 가지고 있는데, 용도에 따라 여러 개의 HandlerMapping을 사용하는 것도 가능하다.

  • 빈 정의 파일에 HandlerMapping에 대한 정의가 없다면 Spring MVC는 기본(default) HandlerMapping을 사용한다

컨트롤러 어노테이션 및 메소드

  • ModelAndView - 커맨드 객체와 @ModelAttribute이 적용된 메소드의 리턴 데이터가 담긴 Model 객체와 View 정보가 담겨 있다.

  • Model 객체에 담겨 있다.

  • Map커맨드 객체와 @ModelAttribute이 적용된 메소드의 리턴 데이터가 Map 객체에 담겨 있으며, View 이름은 역시 RequestToViewNameTranslator가 결정한다.


Comments