-
[Spring] 스프링의 주요 특징WEB/Spring 2020. 7. 17. 20:56
스프링의 주요 특징
- POJO(Plain Old Java Object) 기반의 구성
- 의존성 주입(DI)을 통한 객체 간의 관계 구성
- AOP(Aspect-Oriented-Programming) 지원
- 편리한 MVC 구조
- WAS의 종속적이지 않은 개발 환경
POJO 기반의 구성
스프링 내부에는 객체 간의 관계를 구성할 수 있는 특징을 가지고 있음
이 관계를 구성할 때 다른 프레임워크와 다르게 별도의 API 등을 사용하지 않는 POJO 구성
즉 자바 코드를 이용하여 객체를 구성하는 방식을 스프링에서 그대로 사용 가능
이는 개발자가 특정한 라이브러리나 컨테이너 기술에 종속적이지 않음을 의미
생산성에서 유리, 테스트 작업이 유연함
의존성 주입(DI)과 스프링
'의존성'이란 하나의 객체가 다른 객체 없이 제대로 된 역할을 할 수 없다는 것을 의미
ex) 주방장에게 문제가 생겨서 못 나오면 장사를 할 수 없음
이처럼 하나의 객체가 다른 객체의 상태에 따라 영향을 받는 것을 의미
A객체가 B객체 없이 동작이 불가능한 상황 = 'A가 B에 의존적이다.'
'주입'이란 외부에서 '밀어 넣는 것'을 의미
즉 '의존성 주입'이란 '어떤 객체가 필요한 객체를 외부에서 밀어 넣는 것'을 의미
의존성 주입이 왜 필요한가?
ex) 음식점에서 식재료를 직접 사지 않고 대행업체에서 배송해 주는 것을 사용한다.
=> 장사에만 집중할 수 있다는 장점이 있음
==> 주입을 받는 입장에서는 어떤 객체인지 신경 쓸 필요가 없음
===> 어떤 객체의 의존하든 자신의 역할은 변하지 않음
의존성 주입 방식을 사용하려면 의존성이 필요한 객체를 찾아서 주입하는 역할을 해주는 존재가 필요함
=> 'ApplicationContext' 라는 존재가 필요한 객체를 생성하고 필요한 객체를 주입하는 역할을 함
스프링에서는 ApplicationContext가 관리하는 객체들을 '빈(Bean)'이라는 용어로 부름
즉 ApplicationContext는 빈과 빈 사이의 의존관계를 처리하는 역할
※ 의존성 주입의 과정
- 스프링 프레임워크가 실행되면 스프링이 사용하는 메모리 영역인 ApplicationContext 객체(컨테이너)가 생성
- 스프링은 root-context.xml에 설정되어 있는 <context:component-scan> 태그를 통해 해당 패키지를 스캔
- 해당 패키지에 @Componet 어노테이션이 존재하는 클래스들의 객체를 생성
- @Autowired 어노테이션 설정에 맞게끔 객체를 주입
AOP의 지원
대부분의 시스템이 공통으로 보안이나 로그, 트랜잭션과 같이 비즈니스 로직은 아니지만, 반드시 처리가 필요한 부분을 '횡단 관심사(cross-concern)' 라고 함
AOP는 이러한 횡단 관심사를 모듈로 분리하는 프로그래밍 패러다임
AOP를 통해 얻을 수 있는 것
- 핵심 비즈니스 로직에 집중해 코드 개발
- 각 프로젝트마다 다른 관심사 적용 시 코드의 수정 최소화
- 원하는 관심사의 유지보수가 용이
트랜잭션의 지원
어노테이션 혹은 XML 설정을 통해 트랜잭션 관리가 가능
=> 개발자가 매번 상황에 맞는 코드(트랜잭션 처리)를 작성할 필요가 없음
출처 : http://www.yes24.com/Product/Goods/64340061
'WEB > Spring' 카테고리의 다른 글
[Spring] 스프링 MVC 프레임워크 설계 구조 (0) 2020.07.19 [Spring] 스프링 MVC 3-tier 구성 (0) 2020.07.18 [Spring] Level3 REST API 구현을 위한 HATEOAS 적용 (0) 2020.07.05 [Spring Boot] java.sql.SQLNonTransientConnectionException: Could not create connection to database server. (0) 2020.06.06 [Spring] The prefix "mybatis-spring" for element "mybatis-spring:scan" is not bound. (0) 2020.05.28