-SKplanet Tacademy의 스프링 프레임워크 강의를 듣고 정리한 내용입니다-
Spring Framework?
- Java 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크
Spring 삼각형
- 엔터프라이즈 개발의 복잡함을 상대하는 Spring의 전략
-> Portable Service Abstraction, DI, AOP, POJO
Portable Service Abstraction(서비스 추상화)
- 트랜잭션 추상화, OXM 추상화, 데이터 액세스의 Exception 변환기능 등 기술적인 복잡함은 추상화를 통해 Low Level의 기술 구현 부분과 기술을 사용하는 인터페이스로 분리한다. 개발자가 분리된 인터페이스만 보고 개발할 수 있도록 제공
DI(의존관계주입)
- Spring은 객체지향에 충실한 설계가 가능하도록 단순한 객체 형태로 개발할 수 있고, DI는 유연하게 확장 가능한 객체를 만들어 두고 그 관계는 외부(Container)에서 동적으로 설정해준다.
AOP(관점지향 프로그래밍)
- 애플리케이션 로직을 담당하는 코드에 남아 있는 기술 관련 코드를 분리해서 별도의 모듈로 관리하게 해준다.
POJO(자바 Object)
- 특정 환경이나 규약에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 객체
ex) MyServlet은 HttpServlet을 상속받음. MyServlet은 web container가 없으면 동작 못함 => MyServlet은 POJO 아님
Spring Framework 특징
1. 컨테이너 역할
- Spring 컨테이너는 Java 객체의 LifeCycle을 관리하며, Spring 컨테이너로부터 필요한 객체를 가져와 사용할 수 있다.
2. DI 지원
- Spring은 설정 파일(XML)이나 어노테이션을 통해서 객체 간의 의존관계를 설정할 수 있도록 한다.
3. AOP 지원
-Spring은 트랜잭션이나 로깅, 보안과 같이 공통적으로 필요로 하는 모듈들을 실제 핵심 모듈(업무로직)에서 분리해서 적용할 수 있다.
4. POJO 지원
- Spring 컨테이너에 저장되는 Java 객체는 특정한 인터페이스를 구현하거나, 특정 클래스를 상속받지 않아도 된다.
5. 트랜잭션 처리를 위한 일관된 방법을 지원
- JDBC, JTA 등 어떤 트랜잭션을 사용하던 설정을 통해 정보를 관리하므로 트랜잭션 구현에 상관없이 동일한 코드 사용가능
ex) commit, Rollback 같은 트랜잭션을 코드로 개발하는 것이 아니라 설정(XML, 어노테이션)으로 구현함
6. 영속성과 관련된 다양한 API 지원
- Spring은 MyBatis, Hibernate 등 데이터베이스 처리를 위한 ORM(Object Relational Mapping) 프레임워크들과의 연동을 지원
Spring 프레임워크 구성하는 기능 요소
1. Spring Core
- Spring 프레임워크의 기본기능(Container)을 제공한다.
- 이 모듈에 있는 BeanFactory는 Spring의 기본 컨테이너이면서 스프링 DI의 기반
2. AOP
- 업무로직, 공통로직 분리
- AOP 모듈을 통해 Aspect 지향 프로그래밍을 지원한다.
3. ORM
- MyBatis, Hibernate, JPA 등 널리 사용되는 ORM 프레임워크와의 연결고리를 제공한다.
4. DAO
- JDBC에 대한 추상화 계층으로 JDBC 코딩이나 예외처리 하는 부분을 간편화 시켰고, AOP 모듈을 이용해서 트랜잭션 관리 서비스도 제공한다.
5. Web
- 웹애플리케이션 개발에 필요한 기본기능을 제공한다.
- Webwork나 struts와 같은 다른 웹애플리케이션 프레임워크와의 통합을 지원한다.
6. Spring Context
- Spring Core를 확장시킨 것
- 국제화(다양한 언어 지원) 메시지, 라이프사이클 이벤트, 유효성 검증 등을 지원한다.
7. Web MVC
- 사용자 인터페이스가 애플리케이션 로직과 분리되는 웹 애플리케이션을 만드는 경우에 일반적으로 사용
'웹 > Spring' 카테고리의 다른 글
[Spring]Spring Framework Basic Framework 개념_어노테이션 | T아카데미 (0) | 2021.05.25 |
---|---|
[Spring]JUnit_java.lang.Exception: No runnable methods (0) | 2021.05.18 |
[Spring]Spring Framework Basic Framework 개념_IoC, DI | T아카데미 (0) | 2021.05.18 |
[Spring]Spring Framework Basic Framework 개념 | T아카데미 (0) | 2021.05.17 |
[Spring]_Whitelabel Error Page (0) | 2021.04.30 |