본문 바로가기
Java | spring/Spring

Spring 스프링 특징 : DI / POJO / AOP

by 워니 wony 2019. 5. 10.

스프링의 특징

  • 어플리케이션 프레임워크
  • 경량(Lightweight) 컨테이너
  • 의존성 주입 Dependency Injection(DI)을 통한 객체 간의 관계 구성
  • Aspect Oriented Programming(AOP) 지원
  • POJO 기반의 구성
  • 편리한 MVC 구조
  • WAS 종속적이지 않은 개발 환경

 

 

POJO 기반의 구성

  • 내부에는 객체 간의 관계를 구성할 있는 특징을 가지고 있음
  • 스프링은 다른 프레임워크들과 달리 관계 구성 별도의 API 등을 사용하지 않는 POJO(Plain Old Java Object) 구성만으로 가능하도록 제작되어 있음
  • 일반적인 JAVA 코드를 이용해서 객체를 구성하는 방식을 그대로 스프링에서 사용 가능
  • 그렇기 때문에 코드를 개발할 개발자가 특정한 라이브러리나 컨테이너의 기술에 종속적이 않다는 것을 의미

 

 

의존성 주입(DI) 통한 객체 간의 관계 구성

  • 스프링 하면 가장 먼저 떠올리는 단어가 '의존성 주입 DI' IoC(Inversion Of Control) 제어의 역행
  • 제어의 역행 : 메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것을 의미, 개발자는 필요한 부분을 개발해서 '끼워 넣기' 형태로 개발하고 실행
    최종
    호출이 개발자에 의해서 이뤄지지 않고, 프레임워크의 내부에서 결정된 대로 이뤄지게 되는 것을 의미
  • 의존성 주의 : 제어의 역행이 일어날 스프링이 내부에 있는 객체( 빈이라고 ) 간의 관계를 관리할 사용하는 기법
    의존성
    주입은 그대로 이런 의존적인 객체를 직접 생성하거나, 제어하는 것이 아니라, 제어의 역행으로 특정 객체에 필요한 객체를 외부에서 결정해서 연결 시키는 것을 의미
    • 생성자를 통한 주입
    • set 메소드를 이용한 주입
    • 의존성 주입의 종류

 

AOP 지원

  • 좋은 개발 환경의 중요 원칙은 '개발자가 비즈니스 로직에만 집중할 있게 한다'입니다.
  • 대부분의 시스템이 공통으로 가지는 보안이나 로그, 트랙잰션과 같이 비즈니스 로직은 아니지만, 반드시 처리가 필요한 부분을 스프링에서는 '횡단 관심사' 라고 하고, 스프링은 이러한 횡단 관심사를 분리해서 제작하는 것이 가능
  • Aspect Oriented Programming 이러한 횡단 관심사를 모듈로 분리하는 프로그래밍의 패러다임
  • 스프링은 AOP AspectJ 문법을 통해서 작성할 있다. 그래서 이러한 장점이 있음
    • 핵심 비즈니스 로직에만 집중
    • 프로젝트마다 다른 관심사를 적용할 코드의 수정을 최소화
    • 원하는 관심사의 유지보수가 수월한 코드를 구성

 

트랜잭션의 지원

  • 하나의 업무가 여러 작업으로 이루어 지는 트랜잭션의 관리를 애노테이션이나 XML 설정할 있어서 개발자가 매번 상황에 맞는 코드를 작성할 필요가 없도록 설계되어 있음

 

 

낮은 결합도(loosely coupled)

  • 결합도 : 하나의 오브젝트가 변경이 일어 관계를 맺고 있는 다른 오브젝트에서 변화를 요구하는 정도
  • 결합도가 높으면 변경에 따른 작업량이 많고, 변경으로 인해 버그가 발생할 가능성이 높다. 그렇기 때문에 변경이 생길 만한 것은 결합도를 낮게 개발 해야 한다.

 

 

참고자료 : 코드로 배우는 웹 프로젝트(book)

반응형

댓글