혁신을 이룹니다, 오딘박스(OdinBOX)

언제나 어디서나 오딘박스와 함께!

스프링(Spring), 기초부터 차근차근 알아보기

간지뽕빨리턴님 2022. 5. 7. 22:34
반응형

HTML,CSS,JAVASCRIPT,JS,JQUERY,개발,DEV,SOURCE,GITHUB,프레임워크,이클립스

스프링 A부터 Z까지 천천히 배웁시다.

최근 스프링 관련해서 배우고 있어 아직 저 또한 초보이기 때문에 기억하고 기록하는 차원에서 글을 적으려고 합니다 물론 여기서 저는 타 블로그 현업 개발자분들보다 부족할 수 있지만 기초부터 알아가기 위해 이렇게 글을 적으려고 하니 초보 분들에게도 많은 도움이 되었으면 좋겠습니다.

목차

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

    스프링이란?

    우선 스프링이란 무엇인지 알아보려면 자바에 대해서 먼저 알아야 합니다 자바는 우리가 프로그래밍을 하게 되면 가장 기초로 시작하는 C언어 자바로 시작을 하게 되기도 합니다. 우선, 자바를 많이 하는 이유는 객체 지향이라 쉽게 배울 수 있다는 것입니다. 여기서 자바의 특징에 대해서 잠깐 알아보도록 하겠습니다. - 자바 웹 프레임워크

    1. 객체지향 언어

    객체지향 프로그래밍(OOP : Object Oriented Programming)이라고 하며 프로그램을 개발하는 자바를 배우게 되면 흔히 비유하는 붕어빵 틀을 많이 비유하게 되는데 객체라는 것을 먼저 만들고 하나하나 조립(연결)을 하며 하나의 프로그램을 완성을 하는 것입니다. 이러한 객체들을 만들기 위해선 클래스(Class)를 만들어 작성하고 객체와 객체를 연결하여 목적에 맞는 프로그램을 만듭니다 자바는 객체지향 언어의 특징이라고 할 수 있는 캡슐화, 상속성, 다향성을 완벽하게 지원을 하는 언어입니다.

    2. 인터프리터 언어

    간단히 이야기하면 소스코드를 바로 실행하는 컴퓨터 프로그램 또는 환경이라고 이야기를 할 수 있습니다. 텍스트로 된 소스를 컴파일을 하게 되면 클래스 파일을 만든 후 자바 런타임으로 클래스 파일을 실행을 하게 됩니다.

    3. 이식성

    서로 다른 환경을 가진 시스템 간 프로그램을 옮겨 실행할 수 있다 자바 실행환경(JRE)이 설치가 되어있다면 어떤 운영체제에도 실행을 할 수 있습니다.

    4. 메모리 자동 관리

    C++의 경우 메모리 생성된 객체를 제거하기 위해선 직접 코드 작성을 통해 제거를 해야 하지만 자바의 경우 개발자가 직접 메모리에 접근할 수 있도록 설계가 되어 있으며 메모리는 자바가 직접 관리를 합니다 객체 생성 시 자동으로 메모리 영역을 찾아 할당을 하며 사용이 완료된다면 Garbage Collector(쓰레기 수집)를 실행시켜 자동으로 사용하지 않는 객체를 제거를 할 수 있어 개발자는 메모리에 대한 스트레스를 덜 받을 수 있습니다.

    5. 동적 로딩 / 다양한 프로그램 개발 / 오픈소스 라이브러리

    실행을 하게 되면 모든 클래스가 사용이 되는 것이 아닌 필요한 시점에 클래스를 사용을 할 수 있다는 장점입니다. 다양한 운영체제(OS)에서 실행을 할 수 있는 프로그램을 개발을 할 수 있습니다. 안드로이드 앱도 개발을 할 수 있습니다. 자바는 오픈 소스 언어이며 현재 사용할 수 있는 오픈소스가 굉장히 많습니다. 어떠한 기능을 구현을 할 때 걸리는 시간을 획기적으로 단축을 시켜 이용을 할 수 있다는 장점이 있습니다.

     

    자바의 특징들을 몇 가지 알아보았습니다 스프링은 이런 자바를 활용하여 조금 더 쉽게 개발을 해줄 수 있게 해주는 프로그램 툴이라고 할 수 있습니다. 거기다 프레임워크 즉, 소프트웨어 개발에 있어 하나의 뼈대를 이야기하며 둘을 합쳐 자바를 쉽게 개발을 할 수 있게 해주는 뼈대를 제공하는 것이라고 생각을 하는 것도 이해하기 좋은 것 같습니다.

    스프링 특징은?

    1. 제어 역행(IoC : Inversion of Control)

    애플리케이션의 느슨한 결합을 도모하며 컨트롤의 제어권이 사용자가 아닌 프레임워크에 있어 필요에 따라 스프링에서 사용자의 코드를 호출합니다.

    2. 의존성 주입 (DI : Dependency Injection)

    각 계층이나 서비스들 간 의존성이 존재할 경우 프레임워크가 서로 연결을 시켜줍니다.

    3. 관점지향 프로그래밍 (AOP : Aspect-Oriendted Programming)

    트랜잭션이나 로깅, 보안과 같이 다양한 종류의 모듈에서 공통적으로 사용하는 기능을 사용하는 경우 해당 기능을 분리하여 관리할 수 있습니다.

    4. 경량 컨테이너

    자바 객체를 직접 관리를 합니다.

    5. POJO방식 (Plain Old Java Object)

    객체지향 원리를 기본으로 하고 특정 환경이나 규약에 종속되지 않고 필요에 따라 재활용을 할 수 있습니다.

    MVC

    스프링을 사용하기 시작하면서 MVC라는 것을 조금 더 명확하게 이해를 할 수 있었던 것 같습니다. 처음 이론은 복잡하게 느껴지는 느낌이지만 저 또한 초보이다 보니 같은 입장에서 쉽게 이해할 수 있도록 설명을 하겠습니다.

     

    우선 MVC란 모델 + 뷰 + 컨트롤러가 합쳐진 것입니다. 사용자 인터페이스와 데이터 및 논리 제어를 구현하는 소프트웨어 디자인 패턴입니다.

    Model : M

    애플리케이션에 비즈니스 로직과 사용되는 데이터를 다루고 있습니다.

    View : V

    이름에서도 알 수 있듯이 최종 사용자에게 보이는 프레젠테이션 로직을 담당하는 영역이라고 생각하면 됩니다. 보통 자바 웹 애플리케이션에서는 JSP를 통해 구현을 하기도 합니다.

    Controller : C

    컨트롤러의 경우 전반적인 흐름을 관리하는 역할을 하고 모델과 뷰의 교통 정리를 담당을 합니다. 사용자 요청을 받은 비지니스 로직을 수행하고 그 결과를 뷰를 통해 보여주는 역활을 합니다.

    쉽고 간편하게 이해를 하려면 그림을 보면 더 쉽게 이해가 간다.

    스프링은 이렇게 간편하고 쉽게 이용을 할 수 있도록 만들어져 있습니다. 처음 스프링을 이용을 할 때 접했던 MVC와 함께 컨트롤러와 뷰, 모델이 나눠져 있어 이해를 하기 힘들었지만 이렇게 보면 조금 더 이해가 쉬울 것 같아 정리를 했습니다 앞으로 더욱 정리하면서 쉽고 간편하게 글을 올리도록 하겠습니다 혹시나 궁금한 질문이 있으면 댓글을 달아주시면 답변을 드리도록 하겠습니다.