728x90

Backend/Spring 7

Gradle과 Maven의 차이를 알아보자!

이번 포스팅에서 다룰 주제는 Spring Project에서 사용하는 필수적인 관리 도구인 Gradle과 Maven에 대해 알아보며 Gradle과 Maven이 어떤 부분에서 차이점이 있는지 Gradle의 장점으로 인한 CI / CD 환경에 대해 알아보겠습니다. Maven과 Gradle 모두 빌드 관리 도구입니다. 빌드 관리 도구란??? 프로젝트에서 작성한 소스 코드와 프로젝트 내에 필요한 Xml, Properties, jar 등의 파일을 JVM 혹은 WAS가 인식할 수 있도록 도와주는 도구입니다. 프로젝트의 생성, 테스트 빌드 혹은 배포 등의 작업을 위한 전용 도구입니다. 애플리케이션을 개발하며 필요한 라이브러리들을 다운로드하고 사용할 때 번거롭게 일일이 다운로드할 필요 없이 빌드 도구 설정에 필요한 라이..

Backend/Spring 2022.01.26

자주 사용되는 Spring 어노테이션에 대해 알아보자!

안녕하세요 이번 포스트에서 이야기할 내용은 Spring 어노테이션( 주석 )입니다!. Annotation이란? ( 주석 ) Annotation이란 Java 5부터 추가된 문법입니다. 사전적 의미는 주석이지만 자바에서 사용될 때의 Annotation은 코드 사이에 주석처럼 쓰여서 특별한 의미를 부여합니다. Spring AOP의 A, Aspect를 Annotation이라고도 할 수 있습니다. 특정 기능, 작동하는 것을 개별로 모듈로 만들어 필요한 곳에 @Annotation 형태로 넣을 수 있게 하는 것이 AOP의 편리한 점입니다. Spring Annotation 어노테이션 설명 @Controller 스프링 MVC의 C, Controller 객체임을 명시하는 어노테이션 @RequestMapping 특정 URI..

Backend/Spring 2022.01.21

Spring AOP의 구동 원리와 Proxy와의 관계

지난 포스팅에서는 Filter, Interceptor, AOP 간의 차이점을 알아보았습니다. 이번 포스팅은 JVM 런타임 동안 Spring이 무엇을 하는지 , 어떤 동작을 하고 무슨 준비를 하는지, Weaving과 Proxy의 역할, SOLID의 원칙 중 어떤 것이 적용되는지 알아보겠습니다. 첫째로 Weaving이 무엇인지 알아보겠습니다. Weaving Advice를 핵심 로직에 적용하는것을 의미하며 3가지 방식이 존재합니다. Compile-time Weaving Load-time에 대한 절차가 없어서 성능 하락 없이 구성이 가능합니다. Lombok과 같은 Compile Weaving 시 간섭하는 Plugin들과 충돌이 발생합니다. Class Load-time Weaving Application Cont..

Backend/Spring 2022.01.13

AOP, Filter, Interceptor의 정의와 차이점 (3) - AOP편

AOP ( 관점 지향 프로그래밍 : Aspect Oriented Programming) 란? AOP는 Ioc / DI, 서비스 추상화와 더불어 스프링의 3대 기반 기술 중 하나입니다. AOP는 스프링 기술 중에 가장 이해하기 힘든 난해한 용어와 개념을 가진 기술로 유명합니다. AOP를 이해하려면 OOP를 보조하거나 대체하려는 AOP라는 개념 뒤에 감춰진 필연적인 등장 배경과 스프링이 AOP 기술을 도입한 이유, AOP 도입을 통해 얻는 장점이 무엇인지에 대한 충분한 이해가 필요합니다. AOP는 OOP ( 객체 지향 프로그래밍 : Object Oriented Programming )을 보완하는 확정적인 개념 ( OOP를 대신하는 개념이 아닌, OOP를 더욱 빛나게 혹은 더욱 OOP 답게 사용할 수 있도록 ..

Backend/Spring 2022.01.11

AOP, Filter, Interceptor의 정의와 차이점 (2) - Interceptor 편

앞선 포스트에서는 Filter에 대해 알아보았고 이번 포스팅에서는 Interceptor를 알아보겠습니다. Interceptor ( 인터셉터 : 낚아채다 ) Spring에서의 Interceptor 역할은 Client로부터 들어오는 요청( HttpRequest )을 Controller의 Handler로 도달하기 전에 가로채거나 , Controller로 부터 보내는 응답( HttpResponse )을 가로채는 역할을 합니다. HandlerInterceptor에서 가로채어 원하는 추가적인 로직을 수행한 후에 Controller의 Handler로 보낼 수 있도록 하는 Module입니다. ( Handler : Client가 요청한 url에 따라 실행되어야 할 Method ) 아래의 그림은 Dispather Serv..

Backend/Spring 2022.01.11

AOP, Filter, Interceptor의 정의와 차이점 (1) - Filter 편

AOP, Filter, Interceptor의 설명에 앞서 공통 프로세스에 대해 기본 흐름을 알아야 한다. 프런트엔드 개발 도중에는 공통적으로 처리해야 할 업무들이 많습니다. 로그인, 페이지 혹은 SPA 컴포넌트 간의 권한, XSS( Cross site script ) 보안, 로그, 인코딩 등 많은 공통 프로세스가 있다. 공통 프로세스를 관련된 페이지( 컴포넌트 )마다 작성해야 한다면 중복 코드가 많아지게 되고 Project( 혹은 SPA )의 단위가 커질수록 서버에 부하가 커지며, 소스의 유지 및 보수도 어려워지게 된다. 개발자인 우리는 클린 코드를 지향하며 좋은 코드를 작성해야 합니다! 따라서 공통 프로세스는 따로 관리하는 방법이 좋은 방법 중 하나이다. 이러한 프로그램의 공통 프로세스를 흐름의 시작..

Backend/Spring 2022.01.10

Spring( 봄 ) ?? 스프링의 원리와 기초

Spring Framwork Java Platform을 위한 오픈소스 애플리케이션 프레임워크로서 스프링( Spring ) 이라고 불린다. Open Source : 소프트웨어 혹은 하드웨어의 제작자의 권리를 지키면서 원시 코드를 누구나 열람할 수 있도록 한 소프트웨어로서 오픈 소스 라이센스에 준하는 모든 통칭을 말한다. Framework : 개발자를 위한 설계 기본의 뼈대, 구조, 환경을 말한다. ( 문제 영역을 해결한 재사용, 확장 가능한 라이브러리 ) Spring은 JAVA 기반의 Framwork이고 자바는 객체 지향 언어다. (개발자인 우리는 좋은 객체 지향 프로그래밍이란 무엇인지 알아야한다.) SOLID - 좋은 객체 지향 설계의 5가지 원칙 SRP : 단일 책임 원칙 ( Single Respons..

Backend/Spring 2022.01.10
728x90