[ Spring Boot ] 1. Spring Framework
스프링Spring 프레임워크
- 엔터프라이즈 개발을 편하게해주는 오픈소스 경량급(?) 애플리케이션 프레임워크
애플리케이션 프레임워크
- 특정 계층이나 기술, 업무 분야에 국한되지 않고, 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크
경량급 프레임워크
- Spring이 제공하는 다양한 기능들을 Module로 쪼개어 놓음
- 필요한 Module만 Load해 개발할 수 있으므로 단순한 웹 컨테이너에서(ex.톰캣)도 엔터프라이즈의 고급기술을 대부분 사용 가능
엔터프라이즈 개발 용이
- 개발자는 설정에 관여하지 않고 Biz Logic 개발에 전념할 수 있도록 해준다.
- 설정은 Spring Framework에서 대부분 처리.
오픈소스
- Open Source의 장점(빠른 지원, 빠른 버그픽스 등)을 충분히 취하면서
- 단점(보안상 취약점)과 한계를 잘 극복함
스프링 프레임워크의 특징
1. Bean Container
- spring이 객체의 Life-cycle을 직접 관리
[ 기존 개발시 ]
servlet (new *service())
-> *service (new *Dao())
-> Dao
-> Database -> DB Connection 설정
이렇게 서로 설정관계 있는것들을
[ -> Spring이 직접 객체를 생성해줌 ]
-> 객체생성시점(생성자)과
-> 소멸시점(finalize)을 모두 스프링이 관리)
-> 변수의 범위를 벗어나는 시점
Spring객체들(*Service, *Dao)을 관리(-> 생성, 소멸)
-> spring이 객체를 생성하면,
-> container라는 메모리공간에 객체들을 보관함
*Servlet
-> *Service를 사용
-> Container메모리에 있는 *Service객체를 *Servlet에게 전달
*Service
-> *Dao사용
-> Container메모리에 있는 dao객체를 servlet에게 전달
왜 이렇게 관리하는가?
1) 객체생성에 따른 메모리 절약을 위함
2) 객체 생성에 따른 시간을 절약
MemberService.java -> MemberServlet, ArticleServlet, PointServlet, ReplyServlet에서 MemberService를 사용
( new MemberService(); =>총 4번의 객체를 생성)
2. Dependency Injection(DI) 지원
- 설정 파일이나 Annotation을 통해 객체 간의 의존관계를 설정할 수 있다
- 의존 객체는 Bean Container에서 참조한다
- 객체를 만들어서 필요한 클래스에 전달해주는것을 DI라고 함
MemberServlet -> 의존주입 (Dependency Injection)
- MemberService (member변수) - 의존객체
- MemberDao (member변수)
- ArticleService (member변수) - 의존객체
- ArticleDao (member변수)
3. Aspect Oriented Programming(AOP) 지원
- AOP : 관점지향 프로그래밍
- Application 전반에 필요로 하는 공통 기능들을 핵심 모듈에서 분리함
- 실행 시점(모듈 실행 전, 실행 후 , exception발생시 등)에 따라 공통 모듈(트랜잭션 처리, 로깅, 보안 등)이 실행될 수 있도록 지원 한다
4. Plain Old Java Object (POJO) 지원
- Spring은 순수 Java 객체를 지원한다
- 프레임워크를 사용하기 위한 특별한 클래스나 인터페이스를 상속받지 않아도 된다
5. 트랜잭션 처리를 위한 일관된 방법을 지원
- 트랜잭션에 대한 처리는 스프링이 직접 관리해 개발자가 관여할 필요가 없다. 개발자는 트랜잭션의 처리 기준만 제공함
6. Persistence(영속성)와 관련된 다양한 api지원
- MyBatis, Hibernate 등 데이터베이스 처리를 위한 ORM(Object Relational Mapping) 프레임워크들과의 연동 지원
7. Library Dependency 지원
- Maven, Gradle 등의 빌드 툴을 이용해 필요한 Library를 자동 관리
8. 관습에 따른 설정 지원 (스프링부트 한정)
9. Dependency 버전 충돌 문제 감소 (스프링부트 한정)
- Spring Boot 버전과 알맞은 Library 버전을 찾아 적용해줌
Spring DI / IoC
- JAVA 의 Class 상속 / Interface 를 이용한 추상화를 기반으로 하는 개발 방법
- Spring은 아래 IoC/ DI 를 강력하게 지원하는 프레임워크
IOC
- 개발 패턴(개념적인 설명)
- 프로그램 제어 패턴 중 하나 ( = 객체생성 주체가 개발자 -> 프레임워크로 변경)
- DI 는 IoC패턴의 구현체 중 하나. DI에 따라 프로그램의 흐름이 완전히 변경됨
DI
- Dependency Injection
- 프로그램에 필요한 객체들을 Bean Container 에 두고 필요할 때 마다 사용함
- 스프링은 DI를 기준으로 많은 프레임워크 모듈 들이 만들어짐
==> Spring 은 DI Framework 혹은 IoC Framework 라고 부름.
Spring을 사용하기위해서는 : Maven Build가 필요함
Localhost
- 현재 사용중인 pc의 주소
- ip-127.0.0.1과 동일
port
- 현재 사용중인 PC와 프로그램 또는 외부 PC와 통신할 수 있는 번호.
- HTTP의 기본 포트는 80
- 개발 단계에서는 8080을 많이 사용.
HTTP: Hyper Text Transfer Protocol
- WWW(World Wide Web) 상에서 정보를 주고받을 수 있는 프로토콜.
- 주로 HTML 문서를 주고받는 데에 쓰인다.
HTTP로 Client와 Server가 통신한다.
• Request (C -> S)
- Client가 Server에게 데이터를 요청 (URL로 요청)
• Response (S -> C)
- Server는 요청한 Client에게 데이터를 전송 (HTML, Image, File 등)