본문 바로가기
  • 🦄 창민이 개발일지
서버

Spring 정리

by 창민이 개발일지 2023. 5. 10.
 

 

스프링 프레임워크란?

  • 자바 엔터프라이즈 개발을 위한 오픈 소스 애플리케이션 프레임워크
  • 동적인 웹 사이트를 개발하기 위한 서비스를 제공

 

스프링 프레임워크의 특징

  • 경량 컨테이너
    • 자바 객체를 직접 관리
    • 각각의 객체 생성, 소멸과 같은 생명주기를 관리하며 스프링으로부터 필요한 객체를 얻음
  • 제어의 역전 IOC(Inversion of control)
    • 일반적으로 사용자가 코드의 흐름을 주도하며 객체를 구성하고 모든 작업을 제어했다면, IOC는 사용자가 아닌 특별한 객체가 제어 권한을 위임받아 각 객체와 흐름을 제어하는 것.
    • 코드 간의 중복을 줄여 무거운 서버 배치의 부담을 줄이며, 유연한 코드 작성과 유지 보수 등을 편하게 할 수 있음
  • DI(Dependency Injection) : 의존성 주입
    • 각 객체가 서로 의존하는 관계가 될 수 있도록 의존성을 주입합니다. 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 빈(Bean) 설정 정보를 바탕으로 컨테이너가 자동으로 연결
  • DL(Dependency Lookup) : 의존성 검색
    • 컨테이너에서 객체를 관리하기 위해 별도의 저장소에 빈(bean)을 저장하고 개발자들은 컨테이너에서 제공하는 API를 이용하여 사용하고자 하는 빈(bean)을 검색
  • Bean :
    • 스프링 컨테이너가 관리하는 자바 객체
  • POJO(Plain Old Java Object)
    • 단순 자바 오브젝트(평점 한 자바 객체)입니다. 의존성이 없으며 간결한 코드를 작성할 수 있도록 도와줌.
    • 특별한 클래스나 인터페이스를 구현하지 않아도 되기 때문에 자유롭게 코드를 작성할 수 있음.
    • 스프링 프레임워크에서 POJO를 사용하면 다른 기술과의 의존성이 줄어들어 테스트 및 유지 보수가 편리한 유연성을 가짐
  •  AOP(Aspect-Oriented Programming)
    • 관점 지향 프로그래밍을 의미
    • 로킹, 트랜잭션, 보안 등 다루기 어려운 기능을 프로그램의 핵심 로직과 분리하여 관리하는 방법을 제공
    • 따라서 핵심 로직을 변경하지 않고 부가기능을 추가할 수 있기 때문에 개발 및 유지 보수가 용이해지며 코드의 재사용 성과 가독성도 높이고 전체적인 구조의 개선이 가능해짐.
 

 

 

스프링 프레임워크 모듈

  • spring-core
    • ioc 컨테이너와 DI를 구현하는 코드 포함
  • spring-context
    • 스프링 ioc 컨테이너를 사용하여 개발을 지원하는 모듈.
    • application context 인터페이스 제공, JNDI, EJB, Validation, Scheduiling, Internalization 등의 엔터프라이즈 서비스 포함
  • spring-aop
    • aop를 지원하는 모듈.
    • 애플리케이션 전반에 걸쳐 반복적으로 발생하는 로직들을 모듈화해서 관리할 수 있도록 도와줌
  • spring-dao
    • 데이터베이스와의 통신을 담당하는 객체로 애플리케이션과 데이터베이스 사이의 인터페이스 역할을 함
  • spring-orm
    • 객체 관계형 도구를 사용할 수 있도록 지원
  • spring-web
    • 웹 개발에 필요한 기능 지원
  • spring-mvc(model view controller)
    • 웹 프레임워크로 mvc를 통해 웹 개발을 하면 클라이언트에서 요청한 uri를 처리하고 필요한 모델 데이터를 가져와 뷰에 전달하는 것까지 간단하게 처리 가능
  • spring-beans
    • Bean 클래스와 BeanFactory 인터페이스 제공
  • 기타: spring-websoket, spring-test, spring-data, spring-security

 

스프링 프레임워크가 장점

  • 생선성
    • 다양한 기능과 라이브러리를 제공하여 생산성이 높습니다. 또한 코드의 재사용성도 높기때문에 빠른 개발을 할 수 있습니다.
  • 유지보수성
    • 의존성 주입, 관점지향 프로그래밍등의 기능을 제공하여 유지보수성을 높일 수 있습니다. 또한 다양한 테스트 기능을 제공하여 개발자들이 효과적으로 테스트를 수행 가능
  • 확장성
    • 모듈화와 의존성 주입을 통해 새로운 요구사항이나 기능을 빠르게 추가할 수 있기때문에 애플리케이션을 쉽게 확장할 수 있음
  • 커뮤니티
    • 많은 분들이 사용하는 만큼 대규모 커뮤니티를 가지고 있기 때문에 많은 개발자들의 활발한 지원과 정보 공유가 이루어지고 있습니다. 따라서 개발시 참고할 수 있는 소스와 정보가 많아 문제 해결 등에 지원을 받을 수 있음

 

도서관에서 Spring 스터디 ~

 

'서버' 카테고리의 다른 글

스프링 부트와 JPA 활용  (0) 2023.05.12
Spring boot 란  (0) 2023.05.11
개인 서버 채굴 해킹 사례 및 분석  (1) 2022.07.08
Django을 위한 웹 지식  (0) 2022.06.20
개인용 서버 만들기 5편(딥러닝 서버 구축 2편)  (0) 2022.06.19