2019백업

3. Spring Framework 개요

728x90

1. Spring Framework?

Java 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크이다.

 

엔터프라이즈 개발의 복잡함을 상대하는 Spring의 전략

1) Portable Service Abstraction, 2) DI, 3) AOP, 4) POJO

 

1) Portable Service Abstraction(서비스 추상화)

트랜잭션 추상화, OXM(Object XML Mapping) 추상화, 데이터 액세스의 Exception변환 기능 등 기술적인 복잡함은 추상화를 통해 Low Level의 기술 구현 부분과 기술을 사용하는 인터페이스로 분리한다.

추상화란 하위 시스템의 공통점을 뽑아내서 분리시키는 것을 말한다. 
그렇게 하면 하위 시스템이 어떤 것인지 알지 못해도, 또는 하위 시스템이 바뀌더라도 일관된 방법으로 접근 할 수가 있다.
(출처 : 토비의 스프링 p369)
 출처: https://joont.tistory.com/163 [Toward the Developer]

=> 인터페이스를 선언하고 구현한 클래스가 있으면 

해당 서비스를 호출하는 쪽은 구현체가 아닌 인터페이스를 사용함으로써 일관된 방법으로 접근 가능하다.

 

2) 객체지향과 DI(Dependency Injection) 의존 관계 주입

Spring은 객체지향에 충실한 설계가 가능하도록 단순한 객체 형태로 개발 할 수 있고, DI는 유연하게 확장 가능한 객체를 만들어 두고 그 관계는 외부에서 다이나믹하게 설정해준다.

 

3) AOP(Aspect Oriented Programming)

AOP는 애플리케이션 로직을 담당하는 코드에 남아 있는 기술 관련 코드를 분리해서 별도의 모듈로 관리하게 해주는 강력한 기술이다.

 

4) POJO (Plain Old Java Object)

POJO는 객체지향 원리에 충실하면서, 특정환경이나 규약에 종속되지 않고 필요에 따라 재활용 될 수 있는 방식으로 설계된 객체이다.

=> 특정한 환경, 웹컨테이너 없이 JVM만있으면 돌아가는 자바객체

ex) 상속 받으면 x (특정 규약이 없어야 하기 때문)

 

Spring Framework 특징

1) 컨테이너 역할

Spring 컨테이너는 Java 객체의 LifeCycle을 관리하며, Spring 컨테이너로부터 필요한 객체를 가져와 사용할 수 있다.

 

2) DI(Dependency Injection) 지원

Spring은 설정 파일(XML)이나 어노테이션(@Component)을 통해서 객체 간의 의존관계를 설정할 수 있도록 하고 있다.

 

3) AOP(Aspect Oriented Programming) 지원

Spring은 트랜잭션이나 로깅, 보완과 같이 공통적으로 필요로 하는 모듈들을 실제 핵심 모듈에서 분리해서 적용할 수 있다.

 

4) POJO 지원

Spring 컨테이너에 저장되는 Java객체는 특정한 인터페이스를 구현하거나, 특정 클래스를 상속받지 않아도 된다.

 

5) 트랜잭션 처리를 위한 일관된 방법을 지원

-> 프로그램 내에 commit rollback를 코드로 쓰는 것이 아닌 설정을 통해 트랜잭션을 처리한다.

 

JDBC, JTA 등 어떤 트랜잭션을 사용하던 설정(XML, annotation)을 통해 정보를 관리하므로 트랜잭션 구현에 상관없이 동일한 코드 사용가능

=> 추상화 개념

 

6) 영속성(Persistence)과 관련된 다양한 API 지원

SpringMyBatis, Hibernate 등 데이터베이스 처리를 위한 ORM 프레임 워크들과의 연동 지원한다.

 

스프링 프레임워크 

- Spring Core : Spring 프레임워크의 기본기능을 제공한다. (컨테이너)
이 모듈에 있는 BeanFactory Spring의 기본 컨테이너이면서 스프링 DI의 기반이다.
- Spring Context : Context모듈은 BeanFactory의 개념을 확장한 것으로 국제화 메시지, 애플리케이션 생명주기 이벤트, 유효성 검증 등을 지원한다.
- Spring Web MVC : 사용자 인터페이스가 애플리케이션 로직과 분리되는 웹 애플리케이션을 만드는 경우에 일반적으로 사용되는 패러다임이다.

Maven을 사용하는 이유

편리한 Dependent Library 관리 Dependency Managerment
여러 프로젝트에서 프로젝트 정보나 jar파일들을 공유하기 쉽다.
모든 프로젝트의 빌드 프로세스를 일관되게 가져갈 수 있음.

 

 

반응형

'2019백업' 카테고리의 다른 글

4-1) DI 예시 코드  (0) 2019.06.20
4) 스프링프레임워크 DI의 개념  (0) 2019.06.20
2. 프레임워크의 구성요소와 종류  (0) 2019.06.20
1. 디자인 패턴과 프레임워크  (0) 2019.06.20
6.20 스프링 세팅  (0) 2019.06.20