728x90

Backend 18

자주 사용되는 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

[Java] ORM JPA란 무엇인지 알아보자!!

이번 포스팅에서 알아볼 내용은 JPA ( Java persistence API ) 란 무엇인가? JPA의 동작원리 JPA의 특징 Hibernate와의 관계 를 알아보겠습니다. JPA ( Java Persistence API ) 란? JAVA에서 제공하는 API로 JAVA ORM 기술에 대한 표준입니다. 자바 애플리케이션에서 RDBMS를 사용하는 방법을 정의한 Interface입니다. JPA는 스프링의 *PSA, 즉 POJO를 사용하면서 특정 기술을 사용하기 위해서 표준 Interface를 정해두었는데, 그중 ORM을 사용하기 위해 만든 인터페이스가 바로 JPA입니다. 기존 *EJB에서 제공되던 Entity Bean을 대체하는 기술입니다. *ORM이기 때문에 자바 클래스와 DB 테이블을 Mapping 합니..

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

JVM( Java Virtual Machine )을 알아보자!

이번 포스팅에서는 JVM 이란? JVM 용어 정리 JVM의 흐름 JVM의 구조를 알아보겠습니다. JVM ( Java Virtual Machine : 자바 가상 머신 ) 이란? 우선 JVM의 탄생과정을 살펴보면 자바가 공개되기 전에는 모든 컴퓨터 프로그램들은 특정 운영체제에 맞게 작성되었기 때문에 새로운 운영체제가 생길 때마다 새로운 운영체제에 맞는 새로운 프로그램을 만들어야 했습니다. JVM이 탄생한 이후로는 어떤 운영체제에서든지 실행할 수 있고 운영체제에 상관없이 독립적으로 관리할 수 있습니다. 또한 자동으로 가비지 컬렉터를 이용하여 메모리를 관리할 수 있는 강력한 장점이자 JVM의 특징입니다. 용어 정리 Java Source : Source code인 확장자. java로 사람이 작성한 또는 사람이 이..

Backend/Java 2022.01.12

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