반응형

IT is True 550

[Spring Boot] 스프링 부트란 무엇인가?

스프링 부트(Spring Boot) 먼저, 스프링 프레임워크(Spring Framework)는 엔터프라이즈 애플리케이션을 개발하기 위한 핵심 기능을 제공하는 Spring Project 중 하나이다. 이후 등장한 스프링 부트(Spring Boot)는 스프링 프레임워크의 복잡한 설정으로 인한 문제점을 해결하기 위해 등장한 Spring Project 중 하나이다. 일반적으로 Spring이라고 한다면 Spring Framework를 나타낸다. Sping Boot는 Spring을 더욱 간편하게 이용할 수 있는 도구 정도로 해석하면 된다. Spring Boot를 사용하는 이유 XML 기반의 복잡한 설계 방식을 사용하지 않는다. 의존 라이브러리를 자동으로 관리해 준다. 애플리케이션 설정을 자동으로 구성한다. 프로덕션..

[Spring] 스프링 프레임워크(Spring Framework)를 사용하는 이유

JSP를 이용한 애플리케이션 JSP는 Java Server Page의 약자로 초창기 Java 기반의 웹 애플리케이션 개발은 JSP를 통해 이루어졌다. JSP 개발 방식은 사용자에게 보이는 View와 사용자의 요청을 처리하는 서버의 코드가 섞여있는 형태의 개발 방식이다. JSP 예시 상당히 복잡하기 때문에 눈으로만 확인하는 것을 추천한다. TO DO 등록 TO DO List todo nametodo date 할 일이 없습니다. ${todo.todoName}${todo.todoDate} 위 예제를 살펴보면, 클라이언트와 서버가 분리되어 있지 않고 html, javascript 코드와 java 코드가 하나의 페이지에서 작성한 것을 알 수 있다. 이러한 방식은 코드의 가독성이 떨어지며, 복잡하여 유지 보수 측면..

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.

오류 원인 인텔리제이 환경에서 스프링 부트를 통해 웹 프로젝트를 실행하다가 만난 에러이다. 스프링에서 애플리케이션 컨텍스트를 시작하려던 중 오류가 발생했다고 뜬다. debug 모드를 활성화한 상태에서 애플리케이션을 다시 실행하라고 한다. 에러 메시지 중 Action을 살펴보면, 8080 포트가 이미 사용되고 있으니, 해당 프로세스를 중지하거나 다른 포트를 사용하라고 한다. 첫 번째 방법 (프로세스 강제 종료) 8080 포트가 이미 사용되고 있다는 것이다. 만약, IDE에서 다른 프로젝트가 실행되고 있는 것을 파악할 수 있다면, 실행 종료하는 것으로 쉽게 해결할 수 있지만 IDE 상에는 아무 문제가 없다면 명령 프롬프트 창을 통해 해당 프로세스를 강제 종료해야 한다. 윈도우의 명령 프롬프트(cmd)를 실행..

[Spring] PSA란 무엇인가? (Portable Service Abstraction)

PSA(Portable Service Abstraction)란? PSA란 환경의 변화와 관계없이 일관된 방식의 기술로의 접근 환경을 제공하는 추상화 구조를 말한다. 특정 클래스가 추상화된 상위 클래스를 일관되게 바라보며 하위 클래스의 기능을 사용하는 것을 PSA의 기본 개념이다. 따라서 PSA가 적용된 코드는 개발자의 기존에 작성된 코드를 수정하지 않으면서 확장할 수 있으며, 어느 특정 기술에 특화되어 있지 않는 코드이다. Spring에서 동작할 수 있는 라이브러리들은 POJO 원칙을 지키기 위해 PSA 형태의 추상화가 되어있으며, Spring Web MVC, Spring Transaction, Spring Cache, Sprind Data, 메일 서비스 등의 다양한 PSA를 제공하고 있다. 서비스에 적..

[Spring] AOP란 무엇인가? (관점 지향 프로그래밍)

AOP(Aspect Oriented Programming)란? AOP(Aspect Oriented Programming)를 직역하면 관점 지향 프로그래밍으로 해석할 수 있다. OOP(Object Oriented Programming)은 객체 지향 프로그래밍이다. 즉, 객체 간의 관계를 지향하는 프로그래밍 방식이다. 그렇다면 이 관점(Aspect)을 지향하는 프로그래밍은 무엇일까? 위 그림처럼 아이를 키우는 육아 방식이나 교육 방식 등은 부모에 따라 제각각이다. 어떤 부모는 아이의 언어 발달을 위해 책을 읽어줄 것이고, 어떤 부모는 동요나 만화를 들려줄 것이다. 이처럼 아이를 키우는 방식은 다를 수 있지만, 공통되는 부분이 존재한다. 부모의 공통된 관심사는 어떤 방식으로 아이를 키우는 것과는 별개로 아프지..

[Spring] 스프링 IoC와 DI란 무엇인가? (제어의 역전과 의존성 주입)

IoC(Inversion of Control)란? 프레임워크와 라이브러리의 가장 큰 차이는 해당 애플리케이션의 흐름의 제어권(주도권)에 있다. 라이브러리는 애플리케이션 흐름의 주도권이 개발자에게 있고, 프레임워크는 애플리케이션 흐름의 주도권이 프레임워크에 있다. IoC(제어의 역전 또는 제어의 역행)는 애플리케이션 흐름의 주도권이 뒤바뀐 것을 뜻한다. IoC는 개발자가 프레임워크 API를 사용하면서 설정 파일을 통해 객체의 생명주기, 클래스 등을 프레임워크가 직접 제어권을 갖게 되었다. 이처럼 개발자의 제어권이 프레임워크로 넘어가게 되어 제어의 역전이라 부른다. IoC는 제어의 역전 또는 제어의 역행이라 불리며 스프링의 가장 핵심적인 기능으로 객체의 생명주기를 관리하고 의존성 주입(DI)을 통해 각 계층..

[Spring] POJO란 무엇인가?

POJO(Plain Old Java Object) 위 이미지는 Spring 삼각형이라는 유명한 이미지로 Spring의 핵심 개념들을 모두 표현하고 있다. POJO는 IoC/DI, AOP, PSA를 통해서 달성할 수 있다는 것을 의미한다. POJO란 Plain Old Java Object의 약자로, 이를 직역하면 순수한 오래된 자바 객체이다. 즉, Java로 생성하는 순수한 객체를 뜻한다. 이를 해석하면 POJO는 객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고, 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 의미한다. 이러한 POJO에 애플리케이션의 핵심 로직과 기능을 담아 설계하고 개발하는 방법을 POJO 프로그래밍이라고 한다. POJO 프로그래밍 POJO 프로그래밍은 POJO를..

[Codestates] 코드스테이츠 백엔드 Section2 회고

Intro 코드스테이츠 Section 2 과정이 끝났다. 2022년 9월 20일부터 2022년 10월 18일까지 한 달 동안 자료구조, 알고리즘, 네트워크, 데이터베이스, 스프링 프레임워크 개념을 배웠다. Section 2 과정에 대하여 KPT를 기반으로 회고를 작성하고자 한다. KPT를 기반으로 한 개인 회고 목표 Keep, Problem Try 우선순위 목표 나는 컴퓨터 공학에 관심을 가지고 학습하면서 웹 개발에 관심을 가지게 되었고, 그중에서도 백엔드 엔지니어가 적성에 잘 맞는다고 판단하여 백엔드 엔지니어를 목표로 하고 있다. 비록 졸업 후 취업 실패로 인해 어려움을 겪었지만, 지금은 어려움을 이겨내기 위해 부트캠프를 통해 부족한 개발 지식을 쌓고 있다. 현재 목표는 무엇인가? 현재 내가 하고 있는..

[Spring] 스프링 프레임워크(Spring Framework)란 무엇인가?

Intro 웹 애플리케이션을 개발하기 위한 프레임워크는 Spring뿐만 아니라 Django, Express, Flask, Lalavel 등 다양한 프레임워크들이 존재한다. 또한, 프레임워크마다 사용하는 언어도 다르고, 개발 방법도 다르다. Spring Framework는 약 20개의 모듈을 통해 다양한 기능을 제공하고 있다. AOP, Aspect, Servelet, Web 등 여러 용어들을 아키텍처에서 확인할 수 있다. 스프링 프레임워크(Spring Framework) 스프링 프레임워크는 자바 플랫폼을 기반으로 하는 오픈 소스 애플리케이션 프레임워크로 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션이다. Java 기반의 웹 애플리케이션 개발을 위한 프레임워크는 ..

[CS] 프레임워크(Framework)란 무엇인가?

프레임워크(Framework) 디자인 패턴(Design Pattern)을 창시한 GoF의 한 명이자, 프레임워크 설계의 대가 랄프 존슨(Ralph Johnson)은 프레임워크를 “소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하도록 일련의 협업화된 형태로 클래스들을 제공하는 것”이라 정의했다. 하지만, 위 문장으로 소프트웨어 관점에서 프레임워크의 의미를 이해하기에는 쉽지 않다. Frame은 ‘뼈대’, ‘틀’, ‘구조’ 등의 의미를 가지고 있으며, 그림이나 사진을 담는 액자를 프레임이라 부르기도 한다. 자동차의 뼈대가 되는 강판으로 된 껍데기 또한 자동차의 프레임이라고 부른다. 이처럼 Frame은 어떤 대상의 큰 틀이나 외형적인 구조를 의미하는데, 프로그래밍에서도 Frame은 이와 비슷한..

반응형