[세미나] Spring

매빈·2023년 4월 22일
0

EFUB 세미나

목록 보기
4/6
post-thumbnail

Spring


JAVA 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크

✚ 프레임워크

  • 원하는 기능 구현에 집중하여 개발할 수 있도록 일정한 형태와 필요한 기능을 갖추고 있는 뼈대
  • 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 연동과 같은 기능 등을 도움

✚ 라이브러리
개발자가 필요에 따라 호출하여 사용할 수 있는 함수, 클래스, 변수 등으로 구성
개발에 필요한 것들을 미리 구현해 놓은 도구

Spring의 특징


POJO(Plain Old Java Object)

  • 순수한 자바 객체:
    • 특정 기술에 종속되지 않음
    • Java 및 java의 스펙에 정의된 기술만 사용

➡️ 유연하게 변화와 확장에 대처 가능, 자바의 객체 지향 정신에 부합

IoC/DI(Inversion of Control / Dependency Injection)

  • 제어의 역전 (IoC) : 메소드나 객체의 호출 작업을 개발자가 아닌 프레임워크가 담당
  • 의존성 주입 (DI) : 객체를 직접 생성하는 것이 아니라 외부에서 생성한 후 주입시켜주는 방식
    ➡️ 모듈 간의 결합도가 낮아지고 유연성이 높아짐

AOP(Aspect Oriented Programming)

  • 코드를 어떤 로직을 기준으로 핵심적인 관점, 부가적 관점으로 분류하고,
    그 관점을 기준으로 로직을 모듈화
    = 흩어진 관심사를 모듈화

    ➡️ 핵심 로직에만 집중

✚ 흩어진 관심사
소스 코드상에서 계속 반복해서 사용되는 부분

PSA(Portable Service Abstraction)

  • 환경의 변화와 관계없이 일관된 접근 환경을 제공하는 추상화 구조
  • Spring에서 동작할 수 있는 라이브러리들은 POJO 원칙을 지키게끔 PSA 형태의 추상화가 되어있음
  • ex. Spring Web MVC, Spring Transaction, Spring Cache 등

➡️ 확장성이 좋고, 특정 기술에 종속되어 있지 않음

✚ 추상화
클래스들의 공통적인 요소를 뽑아서 상위 클래스를 만들어내는 것

Spring Boot


Spring Framework의 문제점

  • 너무 많은 설정: 스프링의 발전으로 인한 기능 증가 ➡️ 세팅 증가
  • 어려운 의존성 관리: Dependency 버전을 개발자가 관리해야 함
  • 복잡한 배포: 내장 웹서버가 없어 간단하게 배포할 수 없음

➡️ 그래서 Spring Boot가 등장!

Spring Boot

  • 최소한의 설정으로 스프링 프레임워크를 더욱 쉽게 사용할 수 있도록 돕는 도구
  • 장점
    • spring-boot-stater를 통한 dependency 관리 자동화
    • 내장 Tomcat(내장 웹서버)
    • 설정 자동화(AutoConfiguration)
    • 독립적으로 실행 가능한 배포

0개의 댓글