BACK/SPRING

[Spring] 스프링이란? (특징, 장점)

연듀 2021. 10. 16. 13:16

 

 

스프링이란?

 

스프링이란 POJO기반의 엔터프라이즈 애플리케이션으로, 개발을 쉽고 편하게 해준다.

 

POJO(Plain Old Java Object)특정 클래스나 인터페이스를 상속하지 않는다.

Servlet, class(related to db) 등을 상속하면 특정 기술에 종속되는 문제가 있다.

그래서 상속하지 않는 대신 메서드나 인터페이스을 활용하고 싶으면 Pojoobject 메소드를 호출하는 방식을 사용한다. 

 

 

Pojo -> interface -> object1

                           object2

 

 

인터페이스를 구현한 obect1과 object2가 있다고 하자. 

object1을 사용하다 object2 사용하려고 할 때 POJO는 인터페이스를 이용하기때문에 코드가 바뀌지 않는다.

 

 

 

스프링의 장점

 

      • 자바 애플리케이션을 개발하는데 필요한 하부구조 (infrastructure)를 포괄적으로 제공
      • 스프링이 하부 구조를 처리하므로 개발자는 애플리케이션 개발에 집중 -> Simplify Java Enterprise Development
      • Java Enterprise 시스템 개발이 용이
        비즈니스 로직에 집중 가능하여 생산성 증대
        재사용 및 유지 보수 용이, 확장성을 가진 코드 설계

 

 

 

 

 

스프링의 특징

 

 

 

 

의존 관계 주입(Dependency injection)

 

 

new

Object -> object1

          -> object2

 

New를 사용해 object1을 생성해 object에 접근하는 방식에는 강한 결합이 있다.

만약 object1이 아니라 object2를 사용하고 싶으면 object 코드가 수정되어야 한다.

 

 

spring은 object1, object2 객체를 가지고 있는 Spring IOC container(object1, object2) 컨테이너를 사용한다.

Object -> interface -> object1, object2

오브젝트를 클래스의 인터페이스와 결합을 시킨다.

Interface를 실제로 구현한 구현체인 object1object2를 런타임시 인터페이스에 주입시키게 된다.

object1에서 object2로 바뀌어도 object 코드 수정이 불필요하다.

 

=>객체를 일일이 생성하는 것이 아니라 객체의 생성과 주입은 spring IOC container가 해준다

(객체의 라이프사이클 생성과 소멸을 관리)

 

 

 

AOP(Aspect Oriented Programming)

 

핵심적 로직(Business Logic) + concern(logging, transaction, security, ...) 이렇게 두가지가 합쳐져 있던 것을

 

Business Logic + Concern Class(Aspect)로 별도의 클래스로 분리한다.

Runtimeconcern class를 호출한다.

 

 

 

PSA(Portable Service Abstraction)

 

비즈니스 로직에서 mysql을 직접 호출하는 경우에는, 다른 곳에서  Oracle, MariaDB, Postgresql등 다르게 사용한다면

기존 mysql 기반의 코드를 바꿔야 한다. 

 

Business Logic -> interface layer -> MySQL, Oracle, MariaDB, Postgresql

문제점 해결을 위해 PSA는 DB들을 추상화 시켜 Interface layer을 둔다.

비즈니스 로직은 직접 DB를 호출하는 것이 아니라 추상화된 계층을 호출하기 때문에 비즈니스 로직 코드는 바뀌지 않는다.

 

 

구성 요소

 

 

모듈 형식으로 되어있어 필요한 것만 골라 사용할 수 있다.

 

 

 

 

공식 사이트

www.spring.io

 

Spring makes Java simple.

Level up your Java code and explore what Spring can do for you.

spring.io

 

https://docs.spring.io/spring-framework/docs/current/reference/html/

 

Spring Framework Documentation

Overview history, design philosophy, feedback, getting started. Core IoC Container, Events, Resources, i18n, Validation, Data Binding, Type Conversion, SpEL, AOP. Testing Mock Objects, TestContext Framework, Spring MVC Test, WebTestClient. Data Access Tran

docs.spring.io