스프링 프레임워크(Spring Framework)
자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로 줄여서 스프링이라고 불린다.
애플리케이션 프레임 워크
특정 계층이나 기술, 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임 워크를 뜻한다.
애플리케이션 프레임워크는 개발의 전 과정을 빠르고 효율적으로 진행하는 데 일차적인 목표를 둔다.
범용적인 프레임 워크라고 하는 이유?
빅테이터나 통계쪽 강력한 언어 '알'은
웹어플리케이션 로그인에는 사용하기 어려움,
하지만 스프링은 금융, 통신 교육에 범용적으로 사용
경량급 프레임워크
단순한 웹컨테이너에서도 엔터프라이즈 개발의 고급 기술을 대부분 사용할 수 있다.
이전 세대 였던 EJB를 주 프레임워크로 사용할 때 불편했던 점들을 해소
사람마다 다양한 코드를 일정한 형태를 띌 수있게도 해줌
엔터프라이즈 개발 용이
개발자가 복잡하고 실수하기 쉬운 Low Level에 대한 관심을 줄이고, 비즈니스 로직 개발에 전념할 수 있도록 지원한다.
Low Level이란 로깅 처리, 트랜젝션에 대한 처리, 커넥션 등
전자상거래 사이트 개발 시 상품판매나 등록 등의 개발에 집중할 수 있도록
Low Level은 spring이 처리
오픈소스
spring은 오픈소스 기반으로 소스코드가 공개되어있고, 기능을 추가하거나 수정하는 것이 가능하다.
국내의 전자정부 프레임워크가 스프링을 기반으로 제작되어 있다.
스프링 역사
2002년 로드 존슨이 출판한 저서인 Expert One-on-One J@EE Design and Development에 선보인 코드를 기반으로 시작도서를 읽은 개발자들이 코드가 책으로만 존재하기에는 너무 아깝다며 로드 존슨의 허가를 받은 뒤 프레임 워크로 발시킴.
2003년 6월 아파치 2.0 라이센스로 공개되었다.
아파치는 라이센스는 오픈소스 재단 중 가장 공신력있는 곳인 아파치 재단에서 사용하는 라이센스 재단
누구나 무료 정책을 펼치고 있는 재단
졸트상을 받은 스프링
이클립스와 동급의 상을 받을 정도로 혁신적이고 뛰어남

AOP
관점 지향 프로그래밍
ㄴ사용자가 로깅, 트랜젝션 종단 관심사와 횡단 관심사를 나눠서
프로그래머는 비즈니스적 로직 처리에 집중할 수 있게 하는 기술
IoC / DI
Ioc : 제어의 역전
DI : 의존관계주입
PSA
portable Service Absractions
쉬운 서비스 추상화 : 동일한 기능들을 한데 모아서 추상화하기가 쉽다.
POJO
Plain Old Java Object로 별다른 뜻이 아닌 단순히 자바 객체를 사용하겠다는 뜻
J2EE 등의 중량 프레임워크를 사용하며 해당 프레임 워크에 종속된 무거운 객체를 만들게 된 것에
대한 반발에서 사용하게 된 용어
마틴 파울러가 처음 포조 용어 사용
개발자들의 허세(가벼운 객체를 사용하기 싫다)때문에 포조를 만들고 나니
포조 멋진데 그리고 가벼운데 하면서 사용
포조에는 몇 가지 조건 규칙이 존재
특정 규약에 종속되어서는 안된다
자바언어와 꼭 필요한 API외에는 종속되지 말아야 한다.
이전세대의 EJB와 같이 특정 규약을 따라서 비즈니스 컴포넌트를 만들 경우 포조가 아니다.
특정 클래스를 꼭 상속해서 만들어야하는 규약이 있는 경우 포조가 아니다.
특정 환경에 종속(되어야만 종속되는 오브젝트)되면 포조가 아니다.
포조를 사용한 개발 방식의 장점이 무엇일까
POJO의 장점
객체지향적인 설계를 자유롭게 적용할 수 있다.
포조로 개발된 코드는 자동화된 테스트에 매우 유리하다.
특정 기술과 환경에 종속되지 않은 오브젝트는 그만큼 깔끔한 코드가 될 수 있다.
AOP(Aspect-Oriented Programming)
기능의 관심사를 종단 관심사와 횡단 관심사로 구분하여 핵심 관심사에 집중하고,
횡단 관심사는 시스템(프레임워크)에서 담당하게 하는 것

IoC(Inversion of Control) : 제어의 역전
프로그램의 흐름을 개발자가아닌 프레임워크가 주도한다는 의미로
스프링 컨테이너가 프로그램의 흐름을 제어한다는 의미
스프링 컨테이너가 제어권을 가짐으로서 DI, AOP등이 가능해짐
자바 객체 = new 객체 |
스프링 lifecycle을 스프링이 주관 |
DI(Dependency Injection) : 의존성 주입
객체간의 의존성을 자신의 내부 코드가 아닌 외부의 주입으로 가능하게 하는 것으로
외부의 설정파일 등을 통해 정의함
의존관계 설정이 컴파일시가 아닌 실행시에 이루어져 모듈간의 결합도를 낮춤
코드 재사용을 높여서 작성된 모듈을 여러 곳에서 소스코드 수정 없이 사용 가능함
PSA(Portable Service Abstraction) : (쉬운) 서비스 추상화
환경의 변화와 관계없이 일관된 방식의 기술로 접근 환경을 제공하려는 추상화 구조를 뜻함
추상화란 하위 시스템의 공통점을 뽑아내서 분리시키는 것
추상화 예시 |
자전거 - 바퀴 2개 , 핸들, 안장 모든 자전거에 들어가는 공통점을 분리시키는 것 |
추상화를 하면 하위 시스템이 어떤 것인지 알지 못하거나 하위 시스템이 변해도 일관된 방법으로 접근이 가능함
ex)일반적인 Mybatis는 다른 Java Framework에서 사용가능한 라이브러리들과 Spring에서 지원하는 Mybatis 라이브러리는 다르다. Spring에서는 추상화하여 Mybatis 라이브러리를 제공하므로 Mybatis가 변경이 되도 Spring에서 제공되는 라이브러리의 사용법은 변하지 않음
웹프로그래밍 개발시 MVC패턴을 이용 |
MVC란 Model, View, Controller |
구동원리

➊ 클라이언트, 사용자, 스마트폰 가 디스패쳐 서블릿에게 요청
➋ 디스패쳐 서블릿은 해당하는 요청과 맵핑이 되는 컨트롤러가 있는지 살핌
➌ 그래서 핸들러 맵핑된 컨트롤러가 있으면 해당하는 컨트롤러에 요청을 보내게 되고
➍ 컨트롤러 측에서 서비스 단 혹은 다오라고 부르는 데이터베이스단에서
비즈니스적 로직을 처리한 이후에(요청을 처리한 다음에)
➎ 사용자에게 보여줄 페이지를 위해 컨트롤러에서 다시 디스패처 서블릿으로 보내고
➏ 사용자에게 보낼 페이지를 다시 검색-> 뷰 리졸버
➐ 뷰리졸버에서 어떠한 뷰를 보여줄지를 정한 다음
➑ 디스패쳐 서블릿에서 해당하는 뷰를 호출하면서
➒ 컨트롤러에서 처리한 데이터를 뷰에 장착시킨 다음
➓ 사용자에게 응답을 주는 response로 전달

'코리아 IT아카데미 > spring~~~' 카테고리의 다른 글
ddazua | 6강 Spring 핵심 - AOP기초 (0) | 2022.01.17 |
---|---|
ddazua | 5강 Spring 핵심 - DI (0) | 2022.01.14 |
ddazua | 4강 Spring 핵심 - IoC (0) | 2022.01.14 |
ddazua | 3강 프로젝트 생성과 메이븐 설정 (0) | 2022.01.14 |
ddazua | 2강 Spring Framework 개발환경 구축 (0) | 2022.01.14 |