1. 경량(Lightweight)

크기 측면에서 가볍다. 스프링은 여러 개 모듈로 구성되어 있으며, 각 모듈은 하나 이상의 JAR파일로 구성되어 있다. 몇개의 JAR파일만 있으면 개발과 실행이 모두 가능하다. 따라서 스프링을 이용해서 만든 애플리케이션 배포도 빠르고 쉽다.
또한 PJOJ(Plain Old Java Object) 형태의 객체를 관리한다. POJO는 클래스를 구현하는 데 특별한 규칙이 없는 단순하고 가벼운 객체이므로, POJO를 관리하는 것은 기존의 EJB객체를 관리하는 것보다 훨씬 가볍고 빠를 수 밖에 없다.

2. 제어의 역행(Inversion of Control, IoC)

비즈니스 컴포넌트를 개발할때 신경써야 할 것이 낮은 결합도와 높은 응집도다. 스프링은 제어의 역행(Inversion of Control, IoC)를 통해 애플리케이션을 구성하는 객체간의 낮은 결합도를 유지한다.

ㅇ IoC 적용전 : 애플리케이션 수행에 필요한 객체 생성, 객체사이의 의존관계를 개발자가 직접 자바코드로 처리
                       의존관계에 있는 객체를 변경할 때 반드시 자바 코드를 수정해야함.

ㅇ IoC 적용후 : 객체 생성/객체사이 의존관계를 자바 코드로 직접 처리하는 것이 아니라 컨테이너가 대신 처리
                        소스에 의존관계가 명시되지 않아 결합도가 떨어져 유지보수에 편의

 - 결합도를 낮추기 위한 방법
 (1) 다형성(Polymorphsim)을 이용한 상속/메소드재정의/형변환 : interface 클래스 implements 
 (2) 디자인 패턴 : Factory 패턴 적용된 BeanFactory 클래스 추가
                      

3. 관점지향 프로그래밍(Aspect Oriented Programming, AOP)

관점지향 프로그래밍은 비즈니스 메소드를 개발할 때, 핵심 비즈니스 로직과 각 비즈니스 메소드마다 반복해서 사용하는 공통 로직을 분리함으로써 응집도가 높게 개발할수 있도록 지원

관점지향 프로그래밍의 기본개념 : 공통으로 사용하는 기능들은 외부의 독립된 클래스로 분리하고, 해당 기능을 프로그램 코드에 직접 명시하지 않고 선언적으로 처리하여 적용

공통 기능을 분리하여 관리할 수 있으므로 응집도가 높은 비즈니스 컴포넌트를 만들 수 있을 뿐만 아니라 유지보수 혁신적으로 향상 가능.

 

4. 컨테이너(Container)

컨테이너는 특정 객체의 생성과 관리를 담당하며, 객체 운용에 필요한 다양한 기능을 제공. 이랍ㄴ적ㄷ으로 서버 안에 포함되어 배포 및 구동된다. (Servlet 컨테이너는 tomcat서버에도 포함되어 있다.)

대표적 컨테이너 : Servlet 컨테이너 , EJB 컨테이너

애플리케이션 운용에 필요한 객체를 생성하고 객체 간의 의존 관계를 관리한다는 점에서 스프링도 일종의 컨테이너라고 할 수 있다.

 

'IT > SPRING' 카테고리의 다른 글

01_개발환경 셋팅  (0) 2020.01.03
spring sts mapper.xml 소스가 반영안될때..  (0) 2019.06.26
POJO(Plain Old Java Object)  (0) 2019.05.13
자바 기반의 프레임워크  (0) 2019.05.13
프레임워크의 장점  (0) 2019.05.13

+ Recent posts