FrontEnd Programming

[ Spring Boot ] 1. Spring Framework

코딩펭귄 2024. 3. 19. 23:39

스프링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 등)