개발 알다가도 모르겠네요

Spring Framework를 간단하게 알아보자 본문

웹/Spring

Spring Framework를 간단하게 알아보자

이재빵 2021. 9. 14. 19:13
728x90

프레임워크란?

프레임워크는 '구조 품질' 을 보장합니다.

SW 구조 그리고 기반되는 클래스를 제공합니다.

 

 

라이브러리 vs 프레임워크

제어의 역전 (Inversion of Control)

 

라이브러리

  • 클래스의 집합으로, 코드의 재사용성을 지원(ex.math)
  • 제어의 주체는 개발자: 코드에서 라이브러리 함수를 호출.

프레임워크

  • 제어의 주체는 프레임워크: 프레임워크에서 우리의 코드를 호출(제어의 역전)
  • 프레임워크에서 기본적인 골격을 잡아놓았기 때문에 우리는 제어의 흐름에 맞게 코드를 작성해 두면 프레임워크에서 호출.

따라서 프레임워크는

  • 애플리케이션 구조 및 코드의 상당 부분을 제공.
  • 개발자는 애플리케이션의 핵심 로직에 집중 가능.

 

 

스프링이란?

자바 애플리케이션을 개발하는데 필요한 하부구조(infrastructure)를 포괄적으로 제공합니다.

스프링이 하부 구조를 처리하므로 개발자는 애플리케이션 개발에 집중 -> Simplify Java Enterprise Development

 

1.POJO (Plain Old Java Object)

  • class {field, method} : 특정 클래스나 인터페이스 상속X
  • servlet, class related to DB 등을 상속하면 특정기술에 종속되는 문제가 있음.
  • 따라서 Object(parent) - POJO(child) (상속) 대신에 POJO는 Object메소드 호출.
  • 상속하게 되면 Object의 기술 중 5%만 필여해도 전체가 상속되어 불필요하게 크기가 커질 수 있음.

 

2.DI (Dependency Injection)

  • Spring IOC Container 가 객체에 대한 생성-> 소멸까지 모두 관리.
  • 따라서 필요한 객체를 직접 생성하는 것이 아닌 외부로 부터 필요한 객체를 받아서 사용.
  • 이를 통해 객체간의 결합도를 줄이고 코드의 재활용성을 높여줌.

 

3.AOP (Aspect Oriented Programming)

  • Business Logic + Concern(logging, transaction, security ...)   <- 클래스 안에 모두 혼합되어 있음.
  • 따라서 Business Logic Class , Concern Class로 완전 분리하여 코딩, 런타임시 호출.    <-이럴 경우 재사용 가능. 

 

4.PSA (Portable Service Abstraction)

  • Business Logic -> MySQL, oracle, MariaDB, Postgresql 등 항상 다른 db로 바꾸려면 코드를 바꿔야함.
  • 따라서 Business Logic -> interface layer -> MySQL, oracle, MariaDB... db추상화를 해, 추상화된 인터페이스를 앞단에 둠.
  • db를 바꾸더라도 비지니스로직은 인터페이스를 호출하기 때문에 코드를 바꿀 필요X