웹/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