일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 리액트
- HTML
- CREATE
- CSS
- Java
- 메서드
- return
- 개발자 번아웃
- while
- IT잡학사전
- JavaScript 이벤트
- Today I Learned
- 인스턴스
- 자바스크립트
- 이클립스 설치
- Kotlin
- VS Code
- 노마드코더
- til
- vscode
- If
- continue
- 제어문
- break
- MySQL
- react
- 노개북
- 버전 표시 방법
- JavaScript
- 개발자북클럽
- Today
- Total
윤제니
Spring - Framework구조, Spring Framework 구성 및 특징, Spring IoC, DI, DL, Aop, MVC, DAO 본문
Spring - Framework구조, Spring Framework 구성 및 특징, Spring IoC, DI, DL, Aop, MVC, DAO
꿈다루 2020. 5. 12. 14:34Framework
- 프로그램을 좀 더 쉽게 만들 수 있도록 다양한 기능을 미리 제공하는 프로그램의 보조적인 기능(컴포넌트)들의 모임
- 프로그램을 만들어야 할 때 거쳐가야하는 과정이 있는데 그 과정을 미리 만들어 놓은 것 (입력 -> 처리 -> 결과)
- 뼈대, 골격, 구조 => 개발의 기본이 되는 뼈대나 구조를 제공
- 생산성 향상 및 관리 편리
- 대용량 시스템에 사용
- 엔터프라이즈 애플리케이션 Framework + 화이트 박스 Framework + 통합 Framework
Framework 분류
분류 | Framework |
계층 에 따른 분류 | 시스템 인프라스트럭처 Framework |
미들웨어 통합 Framework | |
엔터프라이즈 애플리케이션 Framework | |
확장 방법 에 따른 분류 | 화이트 박스 Framework |
블랙박스 Framwork | |
처리 영역 에 따른 분류 | 기능 Framework |
지원 Framework | |
통합 Framework |
Spring Framework - Enterprise Framework
- 다양한 컴퍼넌트의 기능을 제공하는 통합적인 프레임워크 (다양한 형태의 프로그램 생성 가능)
- 웹 어플리케이션 만들때 많이 사용(Spring MVC)
- 외부에서 지원되는 프로그램과 호환성 좋음
- Spring Framework의 component : STS (Spring Tool Suit) => STS를 통해 Spring Project 제공 받을 수 있다.
Spring Framework 구성 및 특성
- 자바 EE기반의 오픈소스 Framework
- 모든 자바 애플리케이션에서 단순성, 테스트 용이성, 느슨한 결합성(IoC)의 측면에서 Spring 이점을 얻을 수 있음
- 간단한 컴포넌트로 복잡한 애플리케이션 구성 및 설정 가능
▶ Spring Core
* Spring IoC(Inversion of Control) ★ 가장 기본 및 핵심 기술(Core) ★
-
의존성 주입 (IoC : 제어의 역행 - 클래스를 이용하여 인스턴스를 new 연산자를 사용해 생성 하였지만, Spring Container가 미리 인스턴스를 생성 후 포함관계 존재 시 관계를 맺어주는 역할을 함)
- XML 설정 파일을 통해 객체간의 의존관계 설정 가능
- 객체는 의존하고 있는 객체를 직접 생성 및 검색할 필요가 없음
- 제어권의 역전 / 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미
- 컴포넌트 의존관계 결정(Component dependency resolution), 설정(configuration) 및 생명주기(life Cycle)를 해결하기 위한 디자인 패턴
* IoC 컨테이너 *
: 스프링 프레임워크도 객체에 대한 생성 및 생성주기를 관리 할 수 있는 기능을 제공. 즉, IoC 컨테이너 기능을 제공
- IoC 컨테이너는 객체의 생성을 책임지고, 의존성을 관리
- POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 갖는다.
- 개발자들이 직접 POJO를 생성할 수 있지만 컨테이너에게 맡김
DL (Dependency Lookup) |
저장소에 저장되어 있는 Bean에 접근 하기위해 컨테이너가 제공하는 API를 이용하여 Bean을 검색하는 것 |
DI (Dependency Injection) |
각 클래스간의 의존관계를 빈설정(Bean Definition)정보를 바탕으로 컨테이너가 자동으로 연결 객체 래퍼런스를 컨테이너로 부터 주입 받아, 실행 시 동적을 의존관계 생성 컨테이너가 흐름의 주체가 되어 애플리케이션 코드에 의존관계를 주입해 주는 것 * 장점 * 코드가 단순, 컴포넌트 간의 결합도 제거 |
* Spring DI 컨테이너 *
Spring DI 컨테이너가 관리하는 객체를 빈(bean)이라 하고, 빈(bean)들을 관리한다는 의미로 컨테이너를
빈 팩토리(Bean Factory)라고 부른다.
Bean Factory에 여러가지 컨테이너 기능을 추가 => ★ Application Context ★
Bean Factory | * Bean을 등록, 생성, 조회, 반환 관리 * 보통은 BeanFactory를 바로 사용하지 않고, 확장한 Application Context를 사용 * getBean()메소드가 정의되어 있음 |
Application Context | * Bean을 등록, 생성, 조회, 반환 관리 * Spring의 각종 부가서비스를 추가로 제공함 * Spring이 제공하는 Application Context 구현 클래스 여러가지 존재 |
▶ Spring Aop(Aspect Oriented Programming)
- 관점지향 프로그램(프로그램을 나눠서 결합하는 방법)
- 로깅, 보안, 트랜젝션과 같은 공통 기능을 비즈니스 모듈로 부터 분리하여 각각 모듈에 적용 기능
- 따로 분리해서 작성하고 필요할 때 마다 불러서 사용
- 중복된 코드 최소화 및 oop의 문제점을 보완
코드 | 핵심관심 코드 | 원하는 핵심 기능 |
횡단관심 코드 | 사용자가 원하는 기능은 아니지만 보조적으로 나중에 개발자에게 필요한 기능 (기록, 보안, 트랜젝션) |
▶ Spring MVC(Model View Control) ★중요★
- MVC 웹 어플리케이션 개발을 지원하기 위한 모듈
- 다양한 View 기술들을 사용하기 위한 API제공 ex) JSP, Tiles 등
▶ Spring DAO
- DAO를 만들어 주는 컴퍼넌트
- Spring ORM(외부적인 기능을 가져다 사용하는 기능을 제공) ex) MyBatis 등
- Spring JDBC를 빌드 시켜야 사용 가능
Spring Version
: 버전이 업데이트 될 때마다 새로운 기능 추가
* 2.5 : MVC 기능 추가
* 3.0 : Security 보안 기능 추가
* 4.0 : Rest 기능 추가(클라이언트의 요청을 JSON으로 응답하는 형태로 만들 수 있는 기능)
* 5.x : 클라우드 기능 추가(개인이 공용 컴퓨터에서 작업 가능하도록 만들어줌) => 개인이 관리 하지 않아도 됨!
(예로 windows 운영체제를 통해 word, game 등 작업 가능하지만 windows 서버의 문제가 발생 시)
=> 프로그램 재설치 및 데이터 날라가는 현상 발생 => 보완 : 클라우드 시스템
Spring Framework 개발 환경
: 자바 기반의 어플리케이션 개발 프로그램
- JDK
- Eclipse
- WAS(Apache Tomcat)
- DBMS
- Spring Library
- iBatis Library
- Hibernate Library