Programming/Spring

[Spring] 스프링을 시작하며 : 스프링 프레임워크의 개념과 특징, MVC 구조, 스프링 부트 (Spring Framework, Spring MVC, Spring boot)

byeong07 2022. 5. 29. 23:01

 

 

> 스프링 프레임워크 (Spring Framework)

 

스프링(Spring) 이란?

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

- 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공

- 전자정부 표준 프레임워크의 기반 기술로서 쓰이고 있다

 

 

 

스프링의 특징

˙ 경량 컨테이너로서 자바 객체를 직접 관리한다

˙ POJO(Plain Old Java Object) 방식의 프레임워크

    - POJO : 단순하고 가벼운 자바 객체(우리가 자바에서 개발하는 지극히 평범한 객체)

˙ IoC(Inversion of Control; 제어 반전) 지원

    - 필요에 따라 컨트롤의 제어권을 사용자가 갖지 않고 스프링에서 사용자의 코드를 호출

˙ DI(Dependency injection; 의존성 주입)를 통한 객체 간의 관계 구성

        스프링의 3대 기반 기술에서 자세히 설명할 예정

˙  AOP(Aspect-Oriented Programming; 관점 지향 프로그래밍) 지원

        스프링의 3대 기반 기술에서 자세히 설명할 예정

˙ 영속성과 관련한 다양한 서비스 지원

    - iBATIS, 하이버네이트 등 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스 제공

˙  확장성이 높다

    - 수많은 라이브러리가 스프링에서 지원되고 있기 때문에 사용에도 라이브러리를 별도로 분리하기도 용이하다

 

 

 

 

 


스프링의 3대 기반 기술

 

 

1. DI (Dependency Injection; 의존성 주입)

[DI를 사용하지 않은 클래스 간 강한 결합]

❗ Customer A, B의 InsuranceManager가 InsuranceManagerB로 바뀌어야 한다면?

    : A, B의 모든 매니저 객체를 바꿔야 하기에, 모든 Client class에 수정이 발생한다 (고객이 100000명이라도 된다면??T^T)

 

 

[DI를 사용한 클래스 간 느슨한 결합]

- IoC Container : Spring application이 구동될 때, 사용되는 class 들의 객체를 사전에 생성하여 필요한 곳에 적재적소에 제공

- IoC Container가 매니저 객체를 생성해서 Customer A, B에게 주입

 

❗ Customer A, B의 보험 매니저가 매니저 B로 바뀐다면?

    : IoC Container에서 매니저 객체를 InsuranceMaganerB로 변경 (단 한번의 변경 😎)

 

 

 

 

2. AOP(Aspect Oriented Programming; 관점(관심) 지향 프로그래밍)

- 개발자가 비즈니스 로직과 관련한 핵심 관심 기능들(ex. 할일 등록/조회/삭제)의 개발에만 집중할 수 있게 해준다

- Logging, Security, Transaction과 같은 Application 전반에 공통적인 관심 기능(부가적인 관심 기능)을 별도로 불리하여 Springdl 대신 처리한다

 

 

 

 

3. 서비스 추상화

: 하위 서비스의 공통점을 추출해서 분리하는 것 (일반화)

- Client는 어떤 DB인지 알 필요없이 DB Connection을 얻을 수 있다

 

 

 

 

 

 


> Spring MVC 구조

간단하게 정리한 Spring MVC 구조입니다 🙋‍♀️

 

 

 

 

 


> Spring Boot

 

Spring Framework의 복잡한 구성 작업

- web.xml 설정

- Dispatcher Servlet 설정

- 프로젝트 의존성 관리 (Maven, Gradle 사용)

- Spring MVC 등의 기능에 대한 명시적인 XML, 자바 구성

 

👉👉👉 Spring boot의 핵심 : 비즈니스 로직을 제외한 Spring 구성은 Spring에게 맡겨버리자!

 

 

 

Spring Boot의 핵심 기능

1. 스타터 의존성

Spring-boot-starter-web 의존성 추가

    → 일일이 라이브러리에 대한 의존성을 추가하지 않아도 된다 (web.xml에서)

    → Spring MVC 사용을 위한 추가 구성을 하지 않아도 된다

        (Spring MVC 사용을 위해서는 Tomcat이 필요한데, Spring boot에 내장되어 있다!)

 

2. 자동 구성

 

3. Spring Boot CLI

Command Line에서 Spring 조작/배포가 가능한 명령어들

 

4. Actuator

Spring boot application을 모니터링 할 수 있는 기능

 

 

 

 

 

 

 

 

 

 


📚 references

wikipedia - 스프링 프레임워크

 

스프링 프레임워크 - 위키백과, 우리 모두의 백과사전

 

ko.wikipedia.org

Kevin의 알기 쉬운 Java 개발자 로드맵 이야기

 

[무료] Kevin의 알기 쉬운 Java 개발자 로드맵 이야기 - 인프런 | 강의

Kevin의 알기 쉬운 Java 개발자(웹 개발자) 로드맵 이야기, - 강의 소개 | 인프런...

www.inflearn.com

 

 

 

 
 
공감