Framwork 란?
위키 백과에는 프레임워크를 '컴퓨터 프로그래밍에서 소프트웨어 프레임워크(Software framework)는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다.' 라고 정의 되어 있습니다.
제 나름대로 정의 해보자면 '현대 사회에 법이라는 큰 틀 안에 살아가고 있고 최소한 지켜야하는 규칙 또는 규약을 가지고 각자 원하는 삶을 살아간다' 라는 관점에서 보면 법 또한 프레임워크에 해당합니다.
이처럼 큰 틀 안에 규칙을 정해두고 그 안에서 주어진 기능들을 활용해 원하는 것을 만든다고 생각하면 됩니다.
(API의 url path는 여기다 작성해! 하지만 다른 path와 겹치면 안돼! 라는 것처럼)
라이브러리(Library)와 혼동하기 쉬울 수 있는데, 흔히 라이브러리를 도구 라고 설명하여 이에 빗데어 설명하자면,
예를 들면 사과 그리기 미술 대회가 있는데
'원형의 형태를 하고 있는 사과를 그려주셔야 합니다.' 와 같이 미술대회 라는 큰 틀과 규칙을 가지는 것을 프레임워크,
각자 작품을 만드는 방법 또는 도구(연필, 물감 등...) 를 라이브러리 라 보면 됩니다.
프레임워크를 너무 규칙, 규약을 지켜야하는 불편한 것이라고 느낄수있겠지만,
궁극적으로 추구하는 것은 '이것을 사용함으로써 편의를 제공한다'라는 점입니다.
위에 예시로 설명한 것은 이해를 위해 단편적인 부분을 설명한 것이니 오해 없으시길 바랍니다!
Spring Framework 란?
Spring Framework는 Java 애플리케이션을 개발하기 위한 오픈 소스 프레임워크로서 간단히 Spring 이라고도 한다.
동적 웹 사이트를 개발하기 위한 여러가지 서비스를 제공하고 있다.
(Spring web 부터 해서 security, data 등 여러 기능들을 제공한다.)
특징
- Plain Old Java Object
Spring은 POJO 방식의 프레임워크이다. 일반적인 J2EE 프레임워크에 비해 구현할때 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다. - 제어 반전(IoC : Inversion of Control)
Spring은 IoC 컨테이너를 제공하며, 개발자가 객체의 생성과 관리를 직접하지 않고, Spring 컨테이너가 객체의 라이프사이클을 관리하게 한다. - 의존성 주입(DI : Dependency Injection)
객체간의 의존성 관리를 한다. 즉, 객체를 생성할 때 필요한 의존성을 자동으로 주입하는데 코드의 결합도를 낮추어 유연하고 확장성 있는 코드를 작성할 수 있게 해준다. - 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)
여러 객체에서 공통적으로 사용되는 기능을 분리하여 적용할 수 있다. (트랜잭션, 로깅, 보안 등...)
코드의 중복을 줄여주고, 코드의 가독성과 유지보수성을 높여준다.
그외
- MVC 웹 프레임워크(Model - View - Controller)
Spring MVC는 웹 애플리케이션 개발을 위한 웹 프레임워크로, Model-View-Contoller 아키텍처를 기반으로 한다. 각 요소는 독립적으로 테스트 가능하다. - 데이터 액서스
Spring은 JDBC, ORM 프레임워크인 Hibernate 등을 지원하여 데이터 액서스를 쉽게 할 수 있다. 이를 통해 데이터베이스와의 상호작용을 쉽게 할 수 있으며, 간편한 데이터 액세스를 가능케 합니다. - 보안
Spring Security는 인증과 권한 부여를 처리하는 기능을 제공한다. 이를 통해 보안적인 측면에서 안전한 애플리케이션을 개발할 수 있다.
Spring Framework는 초기 설정 및 설계의 진입장벽이 높은 편이였다고 한다(나는 직접 구성한 경험이 없어 어땠는지 정확히는 보지 못했지만..)
하지만 Spring Boot 라는 Spring Framework 모듈이 나오면서 이러한 설정을 일일이 해줘야하는 불편함을 줄이고 빠르게 애플리케이션을 실행할 수 있는 환경을 제공하게 되었다.
Spring 과 유사한 프레임워크로는 NodeJs 의 Express.js, Koa.js ... Python의 Django, Flask 등이 있다.
참고자료
소프트웨어 프레임워크 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 컴퓨터 프로그래밍에서 소프트웨어 프레임워크(software framework)는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다. 간단히 뼈대, 골조(骨
ko.wikipedia.org
스프링 프레임워크 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. -->
ko.wikipedia.org
Spring Boot : Spring, Spring MVC와 차이점, 설명, 개요
Spring vs Spring Boot 스프링: 스프링 프레임워크는 Java의 가장 인기 있는 애플리케이션 개발 프레임워크입니다. 스프링 프레임워크의 주요 기능은 종속성 주입 또는 제어 반전(IoC)입니다. Spring Framewo
jjeongil.tistory.com
'DEV > Spring' 카테고리의 다른 글
[Spring] Spring Security 란? (0) | 2023.07.26 |
---|---|
[Spring] Exception Handler (with. Spring Data Rest) (1) | 2023.07.12 |
[Spring] Spring Data Rest 란? (0) | 2023.07.10 |
[JPA] Repository 인터페이스 (0) | 2023.04.19 |
[JPA] Unique 제약 조건 (1) | 2023.03.28 |