본문 바로가기

Spring

Spring 의 특징과 의존성

Springframework란?


프레임워크란 뼈대나 구조의 틀이 되는 코드들의 집합의 의미를 가지고 있습니다. 세상엔 많은 개발자들이 존재하고 이러한 개발자들의 개개인의 특성이나 구성에 따라 프로젝트의 결과가 달라지는 비효율적인 부분과 단점을 극복하기 위해 프레임워크가 생기게 된 것입니다. 결론적으로 프레임워크를 사용하는 것은 기본적인 구조의 틀을 정해 약속한 기준 안에서 자신들의 코드를 작성하는 것을 말합니다.

스프링프레임워크를 이용하면 개발시간을 단축시킬 수 있으며 안정적인 품질의 결과물을 얻을 수 있는 이점을 가지고 있습니다.

 

 

 

Springframework의 특징


  • POJO를 기초로 한 구성
  • 편리한 MVC 구조
  • WAS에 종속적이지 않은 환경
  • 의존성(DI) 주입
  • AOP 지원

 

 

POJO 구성


POJO(Plain Old Java Object)는 쉽게 말해 일반적 Java 코드를 이용하여 객체지향 프로그래밍 방식을 그대로 스프링에서 사용할 수 있는 것을 말합니다. POJO기반의 구성으로 인해 기존의 Java의 일반적 형태로 코드를 작성할 수 있고 보다 편한 MVC 구조 작성도 가능하며 테스트 작업도 효율적으로 진행할 수 있는 장점을 가지고 있습니다.

 

 

 

의존성 주입(Dependency Injection)


의존성 주입이란 개념은 뜻 그대로 하나의 객체가 다른 객체에 의존관계에 있는 것을 말합니다. 예를 들어 레스토랑에 주방장이 없으면 레스토랑에 장사를 할 수 없는 상태에 놓입니다. 이처럼 레스토랑의 객체가 주방장의 객체에 상태에 따라 영향을 받는 것을 의존성이라 말합니다. 주입은 외부에서 밀어 넣는 것을 말합니다. 비유하자면 레스토랑에서 필요한 식재료를 공급받는 것을 예로 들 수 있습니다. 

종합적으로 의존성 주입은 한 객체에게 필요한 객체를 밀어 넣는 것을 뜻하며 필요한 객체를 찾아 자동으로 주입시켜주는 기능을 말합니다. 스프링이 하는 역할은 ApplicationContext라는 존재가 필요한 객체를 대신 생성하고 주입시켜주는 역할을 합니다. 또한 스프링의 ApplicationContext에서 관리하는 객체들을 빈(Bean)이라 부르며 빈과 빈 사이에 의존관계를 처리하는 방식으로는 @annotation, xml, java등으로 다양하게 설정하여 사용할 수 있습니다.

 

 

AOP 지원


좋은 개발환경의 중요한 원칙중 하나는 개발자가 비지니스로직에만 집중할 수 있는 환경을 만들어 주는 것입니다. 이부분에 있어 가장 보편적으로 생각할 수 있는 것이 반복 코드의 제거를 떠올릴 수 있습니다.  반복적인 코드를 줄이고 비지니스 로직에만 집중할 수 있도록 하는 방법의 개념에 가까운 AOP는 (Aspect-Oriented Programming) 이라는 뜻으로 관점 지향 프로그래밍이란 뜻을 가지고 있습니다.

이는 쉽게 얘기하여 프로젝트내에 각기 다른 메소드로 구성된 핵심 기능이 아닌 부가기능관점에서 공통적으로 사용된 부가기능 메소드를 분리한다는 의미입니다. 예를 들어 로깅, 예외처리, 트랜잭션등 핵심기능이 아닌 하지만 개발엔 필요한 코드들을 말합니다. 이러한 부분을 다른말로 횡단 관심사(Cross-concern)이라고도 부르며 AOP는 이러한 횡단 관심사를 모듈로 분리하는 프로그래밍이라고 볼 수 있습니다.

 

 

 

 

 

 

추가 작성 예정 포스팅입니다.

 

 

출처 - 코드로 배우는 스프링 웹프로젝트

'Spring' 카테고리의 다른 글

Spring @Annotation 종류와 이해  (0) 2019.05.17
스프링 MVC 기본구조  (0) 2019.05.01
mybatis와 스프링 연동 예제  (0) 2019.04.30
IntelliJ로 스프링 gradle 프로젝트 설정  (0) 2019.04.28