IT 기초/Application

[Application] Spring

데이터 세상 2021. 12. 31. 15:26
728x90
반응형

Spring

[Spring 공식 사이트]

 

Spring Framework

 

spring.io

참고 사이트: https://gmlwjd9405.github.io/2018/10/26/spring-framework.html

자바 엔터프라이즈 개발을 편하게 해주는 경량급 오픈소스 애플리케이션 프레임워크

 

J2EE에서 제공하는 대부분의 기능을 지원하기 때문에 JAVA개발에 있어서 대표적인 프레임워크

  • Lightweight Java Applicaion Framework
    • 목표: POJO 기반의 Enterprise Application 개발을 쉽고 편하게 할 수 있도록 한다.
    • Java Application을 개발하는데 필요한 하부구조(Infrastructure)를 포괄적으로 제공한다.
    • Spring이 하부구조를 처리하기 때문에 개발자는 Application 개발에 집중할 수 있다.
  • 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크
  • 간단히 스프링(Spring)이라고도 불린다.
  • 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공한다.
  • 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자 정부 표준 프레임워크의 기반 기술

POJO

  • Plain Old Java Object
  • 상속, 인터페이스가 필요없는 아주 단순하고 가벼운 객체를 의미
  • 원하는 business logic만 넣을 수 있도록 돕는다

vs EJB

  • Enterprise JavaBeans
  • 기업 환경의 시스템을 구현하기 위한 서버 측 컴포넌트 모델이다.
  • 즉, EJB는 애플리케이션의 업무 로직을 가지고 있는 서버 애플리케이션으로 특정 환경에 종속적이고 무겁다.

IoC

  • Inversion of Control
  • 애플리케이션의 느스한 결합을 도모
  • 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어 필요에 따라 스프링에서 사용자의 코드를 호출
  • 객체의 생성 ~ 생명주기 관리를 컨테이너가 관리

DI

  • Dependency Injection, 의존 관계 주입
  • 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 Spring이 서로 연결시켜준다.
  • POJO 객체들 사이의 의존 관계를 Spring이 알아서 연관성을 맺어준다.
  • Ex) 다양한 DB 사용이 가능

AOP

  • Aspect-Oriented Programming, 관점 중심 프로그래밍
  • Spring은 핵심적인 비즈니스 로직과 관련이 없으나 여러 곳에서 공통적으로 쓰이는 기능들을 분리(공통 관심사를 분리)하여 개발하고 실행 시에 서로 조합할 수 있는 AOP를 지원한다.
  • 이를 통해 코드를 단순하고 깔끔하게 작성할 수 있다.

  • 횡단 관심을 수행하는 코드(Logging, Security, Transaction 등)는 aspect라는 특별한 객체로 모듈화하고 weaving이라는 작업을 통해 모듈화한 코드를 핵심 기능에 끼워넣을 수 있다.

Portable Service Abstraction

  • 이식 가능한 서비스 추상화
  • Spring은 완성도가 높은 라이브러리와 연결할 수 있는 인터페이스를 제공한다.
  • 즉, 다른 프레임워크들과의 통합을 지원한다.

 

Spring Modules

참고 사이트: https://goddaehee.tistory.com/156

 

Spring Core

  • Spring Framework의 근간이 되는 요소. 
  • IoC (또는 DI) 기능을 지원하는 영역을 담당
  • BeanFactory를 기반으로 Bean 클래스들을 제어할 수 있는 기능을 지원
  • Bean, https://gmlwjd9405.github.io/2018/11/10/spring-beans.html
    • 애플리케이션의 핵심을 이루는 객체이며, Spring IoC(Inversion of Control) 컨테이너에 의해 인스턴스화, 관리, 생성
    • 컨테이너에 공급하는 설정 메타 데이터(XML 파일)에 의해 생성
    • 애플리케이션의 객체가 지정되면, 해당 객체는 getBean() 메서드를 통해 가져올 수 있다.

Spring Context

  • Spring Core 바로 위에 있으면서 Spring Core에서 지원하는 기능 외에 추가적인 기능들과 좀 더 쉬운 개발이 가능하도록 지원
  • 또한 JNDI, EJB 등을 위한 Adaptor들을 포함

Spring DAO(Data Access Object)

  • JDBC 기반하의 DAO 개발을 좀더 쉽고, 일관된 방법으로 개발하는 것이 가능하도록 지원
  • Spring DAO를 이용할 경우 기존 DAO보다 적은 코드와 쉬운 방법으로 DAO를 개발하는 것이 가능
  • JDBC, Java Database Connectivity
    • 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API
    • 데이터베이스에서 자료를 쿼리하거나 업데이트하는 방법을 제공

Spring ORM

  • Object Relation Mapping 프레임워크인 Hibernate, IBatis, JDO와의 결합을 지원하기 위한 기능
  • Spring ORM을 이용할 경우 Hibernate, IBatis, JDO 프레임워크와 쉽게 통합하는 것이 가능
  • iBATIS
    • SQL에 기반한 데이터베이스와 자바, 닷넷, 루비 등을 연결시켜 주는 역할을 하는 영속성 프레임워크
    • 프로그램의 소스코드에서 SQL 문장을 분리하여 별도의 XML 파일로 저장하고 이 둘을 서로 연결시켜주는 방식으로 작동
  • MyBATIS
    • iBATIS를 기반으로 구글코드에서 새롭게 만들어짐

Spring AOP

  • Aspect Oriented Programming을 지원하는 기능
  • AOP Alliance 기반하에서 개발

Spring Web

  • Web Application 개발에 필요한 Web Application Context와 Multipart Request 등의 기능을 지원
  • Struts, Webwork와 같은 프레임워크의 통합을 지원하는 부분을 담당

Spring Web MVC

  • Spring 프레임워크에서 독립적으로 Web UI Layer에 Model-View-Controller를 지원하기 위한 기능
  • Struts, Webwork가 담당했던 기능들을 Spring Web MVC를 이용하여 대체하는 것이 가능
728x90
반응형

'IT 기초 > Application' 카테고리의 다른 글

Platform, Framework, Library  (0) 2022.05.09
[Application] Node.js  (0) 2021.12.31
[Application] React  (0) 2021.12.31
[Application] Web Application Framework  (0) 2021.12.29
CI/CD  (0) 2021.12.27