Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 우아한테크코스
- redis
- 모던 자바스크립트
- 자바스크립트
- 스프링부트
- 코멘토 #코멘토실무PT #실무PT후기 #실무강의 #리액트강의 #웹프로그래밍 #react #웹개발실무
- Dev-Matching
- Deep Dive
- this
- 파일 url
- api 비동기처리
- oauth
- 검색
- TypeORM
- 프론트엔드
- invalid_grant
- AWS
- 유효시간 설정 url
- 타입스크립트
- 프론트엔드 과제
- 음악 url 파일 다운로드
- bucket4j
- compateto
- 프로그래머스
- NestJS
- 우아한 테크코스
- api 요청 수 제한
- 프리코스
- concurrency limit
- 딥다이브
Archives
- Today
- Total
개발 알다가도 모르겠네요
Spring Framework를 간단하게 알아보자 본문
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
'웹 > Spring' 카테고리의 다른 글
[Spring] Concurrency/Rate Limiter를 적용하여 API 요청을 제어해보자 (0) | 2023.08.25 |
---|---|
Controller에서 jsp return하는 과정 (0) | 2023.02.21 |
스프링 빈 을 간단하게 알아보자 (0) | 2021.11.26 |
MVC를 간단하게 알아보자 (0) | 2021.11.02 |
Web Architecture를 간단하게 알아보자 (0) | 2021.08.31 |