📝오늘 공부한 것
- Spring Framework 공부
- 프로그래머스 문제풀기
📌 Spring Framework
📍 Spring Framework
자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링이라고도 한다.
대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로 쓰이고 있다.
📍 SpringBoot
스프링으로 애플리케이션을 만들 때에 필요한 설정을 간편하게 처리해주는 별도의 프레임워크
📍 Spring
정의 : 엔터프라이즈용 Java 애플리케이션 개발을 편하게 할 수 있게 해주는(1) 오픈소스(2) 경량급(3) 애플리케이션 프레임워크(4)
(1)엔터프라이즈용 Java 애플리케이션 개발을 편하게 할 수 있게 해주는
스프링이 등장하기 이전에는 비즈니스 로직을 구현하기 위해 기술 자체에 대한 공부를 추가적으로 해야만 했다. 그러나, 스프링은 이전 기술에 비해 사용 방법이 상대적으로 덜 복잡하다. 따라서, 개발 초기에 기본적인 설정과 적용시킬 기술들만 잘 선택을 해준다면, 기술보다는 애플리케이션의 로직 자체에 더 집중하여 비즈니스 로직을 구현할 수 있다.
(2)오픈소스
스프링은 모든 사용자에게 무료로 열려있다. 즉, 어떤 개인 및 기업도 스프링을 사용하여 웹 애플리케이션을 개발할 수 있으며, 필요하다면 스프링의 코드를 일부 수정하여 사용하여도 무관하다.
스프링은 오픈소스 프레임워크이지만, 안정적인 개발과 개선이 보장된다. 현재 스프링은 오픈소스로 배포되어 누구나 이용할 수 있지만, 스프링소스(SpringSource)라는 IT기업에서 관리하고 있으며, 스프링의 소스 코드를 수정하거나 개선하는 일에는 스프링소스의 한정적인 인원만 참여할 수 있다.
(3)경량급
스프링은 수십개의 세부 모듈 및 수십만줄의 방대한 코드로 이루어진 프레임워크임에도 불구하고, 스프링의 정의할 때에 경량급이라는 수식어를 사용할 수 있다. 그 이유는 기존에 스프링 대신 사용하던 기술들과 비교하여, 스프링을 사용했을 때에 개발자가 작성해야 할 코드가 상대적으로 단순하다는 것을 표현하기 위함이다.
즉, 스프링을 사용함으로써 기존 기술을 사용할 때에 불가피하게 작성해야만 했던 불필요하게 복잡한 코드를 제거하여 코드의 복잡성을 낮출 수 있음을 의미한다.
(4) 애플리케이션 프레임워크
웹 개발에 있어서 프레임워크란, 어떠한 목적을 쉽게 달성할 수 있도록 해당 목적과 관련된 코드의 뼈대를 미리 만들어준 것을 의미한다.
애플리케이션 프레임워크는 애플리케이션을 개발하는 데에 있어 필요한 모든 업무 및 모든 기술과 관련된 코드들의 뼈대를 제공한다.
📍 Spring의 특징
POJO를 지향
- POJO(Plain Old Java Object)로 순수 Java만을 통해서 생성한 객체를 의미한다. 순수 Java만을 사용한다는 것은 Java 및 Java의 스펙에 정의된 기술만 사용한다는 의미이다.
- 외부 기술이나 규약의 변화에 얽매이지 않아, 보다 유연하게 변화와 확장에 대처할 수 있다.
- 객체지향 설계를 제한없이 적용할 수 있으며, 코드가 단순해져 테스트와 디버깅 또한 쉬워진다.
- POJO 프로그래밍을 위해 스프링은 IoC/DI, AOP, PSA를 지원한다.
IoC(Inversion od Control) - 제어의 역전 / DI(Dependency Injection) - 의존성 주입
- IoC : 객체 간의 의존 관계를 개발자가 아닌 스프링이 맺어주는 것
- DI : 의존 객체를 특정 클래스에서 직접 생성하는 것이 아니라, 외부로부터 주입해주는 것
각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.
AOP(Aspect Oriented Programming) - 관심지향 프로그래밍
- 애플리케이션 전반에 걸쳐 공통적으로 적용되는 코드들을 비즈니스 로직으로부터 분리해내는 것
- 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
PSA(Portable Service Abstraction) - 일관된 서비스 추상화
특정 기술과 관련된 서비스들을 추상화하여 일관된 방식으로 사용할 수 있도록 한 것
📍 Spring Framework의 아키텍처
Data Access/Integration
데이터 처리 관련 모듈
Web
Client쪽 처리에 가까운 모듈
AOP / Aspects / Instumentation / Messaging
유틸성 모듈
Core Container
스프링 구동의 핵심 모듈
Test
유닛테스트등 지원
References :
https://m.blog.naver.com/goottjob/223017496733
https://devscb.tistory.com/111
https://docs.spring.io/spring-framework/docs/5.0.0.M5/spring-framework-reference/html/overview.html
'TIL(Today I Learned)' 카테고리의 다른 글
TIL-231031(Garbage Collection) (0) | 2023.10.31 |
---|---|
TIL-231030(HTTP Method) (0) | 2023.10.30 |
TIL-231027(WAS, WS) (0) | 2023.10.27 |
TIL-231026(REST API) (0) | 2023.10.26 |
TIL-231025(URI, URL, URN) (0) | 2023.10.25 |