본문 바로가기
자바,스프링 - Java,Spring Framework

[Spring] Spring Framework란? 스프링 프레임워크란?

by devscb 2022. 6. 22.
반응형

Spring Framework란? 스프링 프레임워크란?

 Spring Framework란?


spring framework를 한마디로 정의하면 "오픈소스 자바 웹 프레임워크" 입니다.
뜻을 하나씩 살펴보자면,

오픈소스 (오픈소스 소프트웨어): 소스가 공개되어있어, 누구나 자유롭게 확인, 수정, 배포할 수 있는 소스입니다.
자바 : 썬 마이크로시스템즈의 제임스 고슬링 주도로 개발된 객체 지향적 프로그래밍 언어입니다.
웹 (웹 개발) : 인터넷이나 인트라넷을 위한 웹사이트를 개발하는것을 의미합니다.
프레임워크 : 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조/틀입니다.

이를 다시 한 문장으로 표현하자면, Java로 웹사이트를 쉽고 빠르게 개발하기 위한 틀이라고 생각할 수 있습니다.
spring은 Java 생태계에서 가장 유명한 프레임워크 입니다.

 

 Spring framework 다운받기


공식홈페이지 :


spring 설치파일 다운 (버전, dependency 등을 설정하여 다운):

 

spring 설치파일 다운 (빌드된 artifect) :


spring 소스 :


 

 Spring Framework의 특징



1. 여러 문제점을 해결하기 위한 디자인 패턴과 아키텍쳐 적용되어있습니다.

2. 한국 전자정부 프레임워크 기반 기술이며, 공공기관 웹서비스 제공시 스프링 사용을 권장합니다.

3. 경량 컨테이너에서 자바 객체를 직접 관리 : 객체 생성, 소멸과 같은 라이프 사이클을 프레임워크에서 관리합니다.

4. POJO(Plain Old Java Object)방식 : 객체가 가벼우며, 기존에 존재하는 라이브러리 등을 활용하여 개발이 가능하니다.

5. 제어 반전(IoC : Inversion of Control) : 필요에 따라 스프링에서 사용자의 코드를 호출합니다.

6. MVC 패턴(MVC pattern) : 모델-뷰-컨트롤러 세 가지 구성요소로 나눈 패턴을 사용하여 몯류화된 개발방식을 지원합니다.

7. 의존성 주입(DI,Dependency Injection) : 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜줍니다.

8. 데이터 액세스 프레임워크 : mybatis나 hibernate 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공합니다.

9. 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming) : 로깅, 보안 같은 공통 기능을 분리하여 관리 가능합니다.



 Spring Framework 아키텍쳐(architecture)



스프링 프레임워크 아키텍쳐는 크게 아래와 같이 구성되어져 있습니다.
각 모듈들이 구성되어 있고, 프로젝트에 따라 일부 모듈은 사용하지 않을 수도 있습니다.


Test
유닛테스트등 지원

Core Container

스프링 구동의 핵심 모듈

AOP / Aspects / Instrumentation / Messaging
유틸성 모듈

Web
client쪽 처리에 가까운 모듈

Data Access/Integration
데이터 처리 관련 모듈


각 모듈에 따른 세부 내용은 아래에 좀 더 자세히 설명드려보고자 합니다.

 

 Test


테스트 모듈은 JUnit 또는 TestNG 프레임워크로 스프링 구성 요소 테스트를 지원합니다.
예를들어, 아래와 같은 JUnit 코드를 작성할 수 있고, 테스트를 실행해볼수 있습니다.

 

 

[junit 테스트코드와 실행결과]



 


 

 Core Container


Beans : 팩토리 패턴을 정교하게 구현한 빈팩토리를 제공합니다.
*Bean이란 argument(매개변수)가 없는 생성자, Serializable, getter/setter 메소드 제공 조건을 만족하는 자바 클래스를 의미합니다.
예를 들어, 아래 코드는 Bean이라고 부를 수 있습니다.

public class Employee implements java.io.Serializable{
 private id;
 private String name;
 public Employee();
 public void setId(int id){ this.id = id; }
 public int getId(){return id;}
 public void setName(String name){this.name = name;}
 public String getName() {return name;}
}

 

Core : IoC 및 의존성 주입 기능을 포함하여 프레임워크의 기본 부분을 제공
의존성 주입(Dependency Injection)에 대해서는 다음에 좀 더 자세히 알아보겠습니다.

Context : Core 및 Beans 모듈이 제공하는 솔리드 베이스에 구축되며
정의되고 구성된 모든 객체에 액세스하는 매체입니다.

SpEL (Spring Expression Language): 런타임에 객체를 쿼리하고 조작하기 위한 강력한 표현언어
보통 properties에 정의한 내용을 주입합니다.
아래와 같은 코드중 @Value("#{systemProperties['user.region'}") 부분이 SpEL을 사용한 부분입니다.

public static class FieldValueTest{
 @Value("#{systemProperties['user.region']}")
 private String default;
}

위와 같이 코딩했을 시, spring을 실행하면 default라는 변수에 config로 설정한 user.region 값을 주입해주게 됩니다.


 유틸성 모듈 : AOP / Aspects / Instrumentation / Messaging



AOP : Aspect Oriented Programming구현을 제공하여 메소드 인터셉터와 포인트컷을 정의하여 분리해야 하는 기능을 구현하는 코드를 깨끗하게 분리할 수 있습니다.

Aspects : AspectJ와의 통합을 제공하며, 이는 다시 강력하고 성숙한 AOP 프레임워크입니다.

Instrumentation : 특정 애플리케이션 서버에서 사용될 클래스 계측 지원 및 클래스 로더 구현을 제공합니다.

Messaging : 응용 프로그램에서 사용할 웹소켓 하위 프로토콜로 STOMP를 지원합니다. 또한 웹소켓 클라이언트의 STOMP 메시지를 라우팅하고 처리하기 위한 annotation 프로그래밍 모델을 지원합니다

  Data Access/Integration



JDBC : JDBC 관련 코딩의 필요성을 제거하는 JDBC-추상 계층을 제공합니다.

ORM : 은 JPA, JDO, Hibernate, myBatis를 포함한 객체 관계 매핑 API를 위한 통합 계층 제공합니다.
mybatis, hibernate 등은 또 다른 프레임워크라 칭하기도 하는데, 나중에 더 자세히 알아보겠습니다.

OXM : 은 JAXB, 캐스터, XMLBeans, JiBX 및 XStream에 대한 객체/XML 매핑 구현을 지원하는 추상화 계층을 제공합니다.

JMS(Java message service) : 메시지를 생성하고 소비하기 위한 기능이 포함됩니다.

Transaction : 모듈은 특수 인터페이스를 구현하는 클래스와 모든 POJO에
대해 프로그램적 및 선언적 트랜잭션 관리를 지원합니다.
일례로, @Transactional이라는 annotation을 사용하면 개발자는 손쉽게 트랜잭션을 적용할 수 있습니다.


 Web


: 서블릿을 통한 멀티파트 파일 업로드 기능, IoC 컨테이너 초기화 등 웹 중심의 기본 통합 기능과 웹 중심의 애플리케이션 컨텍스트를 제공합니다.

웹-MVC : 웹 애플리케이션을 위한 스프링의 MVC(Model-View-Controller) 구현 포함합니다.

웹소켓 : 웹 애플리케이션에서 클라이언트와 서버 간의 웹소켓 기반 양방향 통신을 지원합니다.

Web-Portlet : View의 모듈화를 위한 portlet을 지원하기 위한 모듈입니다.



 총평


spring framework 에 대해 공부해보고자 정리하게 되었습니다.
이번에는 대략적인 내용만 정리하였는데, 대략적인 내용에서 나온 단어들을 심도있게 다뤄보는 기회를 조금씩 가져보과 합니다.
spring은 Java로 웹 개발한다고 하면 사실상 표준이된 프레임워크로 공부하면 할 수록 여러 디자인패턴들을 익힐 수 있어 유용할것 같습니다.
spring 개발자 구하기도 쉽고 구조화가 잘 되어있어서 품질도 어느정도 보장이 된다는 아주 큰 장점이 있어 누구라도 spring을 선호할 수 밖에 없을것 같습니다.
다만, 아무리 개발하기 편하더라도 toy project에서는 부적합할 수도 있습니다.
생각보다 무겁고 느릴 수 있고, over engineering이 들어갈 수 있기 때문입니다.

 

 

Spring Framework란? 스프링 프레임워크란?

#spring, #springframework, #framework, #java, #web, #다운로드, #pojo, #ioc, #mvc, #di, #aop, #architecture, #스프링, #스프링프레임워크, #프레임워크, #자바, #웹

 

 

https://devscb.com/post/111

 

[Spring] What is Spring Framework? What is Spring Framework?

What is Spring Framework? What is Spring Framework? What is Spring Framework?To define spring framework in one word, it is an “open source Java web framework”.Let’s look at the meaning one by one: Op

devscb.com

 

728x90
반응형

댓글