반응형

Programming/Java, Spring 27

[Spring] Lombok이란? / Lombok의 사용 이유 / Lombok의 단점 / Lombok 사용법

Lombok이란?? 반복되는 메서드를 Annotation을 사용하여 자동으로 작성해주는 라이브러리입니다 일반적으로 DTO, VO, Model, Entity 등의 데이터 클래스에서 많이 사용됩니다. 대표적으로 많이 사용되는 Annotation @Getter @Setter @NoArgConstructor @AllArgConstructor @Data @ToString @Builder Lombok의 사용이유 Annotation 기반의 코드 자동생성으로 인한 생산성이 증가합니다. 반복코드를 줄일 수 있어 유지보수와 가독성을 향상시킬 수 있습니다. Getter / Setter 외 Builder 패턴이나 Log 생성 등의 다양한 방면으로 활용이 가능합니다. Lombok의 단점 Lombok을 지원하는 IDE는 Inte..

[Spring] AOP란?? / AOP를 사용하는 이유

AOP(Aspect Oriented Programming) AOP(Aspect Oriented Programming) → 여러 오브젝트에 나타나는 공통적인 부가 기능을 모듈화하여 재사용하는 기법 또한 관심사의 분리(기능의 분리), 핵심적인 기능에서 부가적인 기능을 분리하므로 핵심기능을 설계하고 구현할 때 객체지향적인 가치를 지킬수 있도록 도와주는 개념입니다 → OOP를 보완한다 AOP를 사용하는 이유 공통 관심 사항을 핵심 관심사항으로부터 분리 그에 따라 코드의 가독성, 유지보수성 및 생산성 증가 각 모듈에 수정이 필요하면 다른 모듈의 수정 없이 해당 로직만 변경 공통 로직을 적용할 대상을 선택 가능 부가기능(인프라 로직) 부가기능을 Aspect 또는 advice로 정의함 중복코드를 만들어낼 가능성 때문..

[Spring boot] 스프링 부트란???

Spring boot 1. Spring boot란? Spring을 더 쉽게 이용하기 위한 도구입니다. Spring은 다양한 기능을 제공하고 있지만, 그 기능을 사용하기 위한 설정에 많은 시간이 걸립니다. ex) Transaction Manager, Hibernate Datasource, Entity Manager, Session Factory 등 → Spring boot는 기존의 Spring의 오래 걸렸던 설정을 편리하게 도와주기 위해 나온 도구입니다. 2. Spring boot의 특징 Spring Boot는 자동설정(AutoConfiguration)을 이용합니다. 어플리케이션 개발에 필요한 모든 Dependency를 Framework에서 관리 jar 파일이 클래스 패스에 있는 경우 스프링 부트는 Dis..

[Spring] DI / IOC란? / 의존성을 주입하는 방법

DI / IOC 컨테이너란? IoC와 DI를 이해하기 전에 먼저 이해해야 할 개념이 있습니다. 그것은 바로 '컨테이너'입니다. 컨테이너란, 우리 대신 객체의 생성과 소멸 같은 부분을 전담해주는 역할을 합니다. IoC란(Inversion of Control)? 그대로 해석을 돌리면 제어의 역전이라고 합니다. 제어는 무언가를 조종하고 다루는 것, 역전은 바뀌는 것 입니다. 즉, 무언가를 조종하고 다루는 존재가 바뀌는 것을 IoC라고 합니다. 우리는 프로그램을 다룰 때, 우리가 직접 제어를 합니다. (예를 들어 객체의 생성을 직접 한다거나) 그러나 스프링에서는 우리가 아닌 다른 존재(컨테이너)가 제어를 합니다. 결과적으로, 스프링의 객체들을 생성하고, 제어하고, 소멸하는 존재는 컨테이너라고 볼 수 있습니다. ..

[Spring] POJO란? / POJO vs Java Beans

POJO란? Plain Old Java Object, 오래된 방식의 단순한 자바 오브젝트 즉, 객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 지칭합니다. 토비의 스프링에서는 특정 기술규약과 환경에 종속되지 않는다고 해서 모두 POJO라고 지칭할 순 없다고 합니다. 진정한 POJO란 객체지향적인 원리에 충실하면서, 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 POJO 라고 설명하기도 했습니다. POJO가 주목 받은 배경 EJB(Enterprise JavaBeans) 기업의 IT 시스템의 요구사항이 늘어나고 기초적인 JDK로는 한계가 있어서 EJB 기술이 등장하였습니다. EJB의 경우에 아래의 문..

[JAVA]람다식이란? / 람다식의 특징 / Lambda Expression

1. Lambda 식이란? Java 8부터 지원되는 함수지향형 코드입니다. 람다식이란 함수명을 선언하고 사용하는 것이 아닌 식별자 없이 실행가능한 함수입니다. 절차형 프로그래밍, 객체지향 프로그래밍과는 다르게 함수의 구현과 호출만으로 프로그램을 만드는 방식인 함수형 프로그래밍에서 자주 사용됩니다. Lambda식은 함수형 프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 지칭하는 용어입니다 함수(Method)를 간단한 ‘식(Expression)’으로 표현하는 방법위 메서드를 아래의 Lambda식으로 바꿀 수 있습니다 (a,b) -> a > b ? a : b int max(int a, int b){ return a > b ? a : b; } 익명 함수(이름이 없는 함수,..

[Spring] 스웨거 어노테이션 / Swagger 2.0 vs Swagger 3.0 차이

Swagger Annotation Swagger란, 서버로 요청되는 API 리스트를 HTML 화면으로 문서화하여 테스트 할 수 있는 라이브러리를 의미합니다. Open API 2.0 (Swagger 2.0) vs Swagger 3.0 Swagger 3.0 Annotation Swagger 2.0 Description @Tag @API 클래스를 Swagger 리소스로 표시 @Parameter (hidden = true) or @Operation (hidden = true) or @Hidden @ApiIgnore API 작업에서 단일 매개 변수를 나타냄 @Parameter @ApiImplicitParam API 작업에서 단일 매개 변수를 나타냄 @Parameters @ApiImplicitParams API 작..

[JAVA] Generic이란??

Generic이란?? 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법 class Person { public T info; } public class GenericDemo { public static void main(String[] args) { Person p1 = new Person(); Person p2 = new Person(); } } T 는 info 필드의 데이터 타입입니다. Person 클래스를 정의하는 시점에서는 info의 데이터 타입을 명시적으로 지정하지 않고 있다가 Person을 인스턴스화 할때 안에 구체적인 데이터 타입인 을 언급하면 는 String이 되고 info의 데이터 타입은 String을 갖게 된다는 뜻입니다. 그럼 자연스럽게 인스턴스를 담아낼 수 있는 p1의 데..

[Spring] JSP & Servlet / JSP와 Servlet의 역할

자바를 배우면 JSP, Servlet, Spring 에 대해서 많이 배우고 듣게 되는데 오늘은 하나씩 알아보도록 하자! JSP, Servlet, 스프링을 각각의 특징을 간단하게 알아보는 포스팅이라 자세한 지식은 다음에 포스팅하도록 하겠다! 서블릿(Servlet) 서블릿은 서버에서 웹페이지 등을 동적으로 생성하거나 데이터 처리를 위해 자바로 작성된 어플리케이션이다! (HTML in JAVA) 쉽게 풀어보자면 '클라이언트 요청을 처리하고 그 결과를 다시 클라이언트에 전송하는 서블릿 클래스의 구현한 자바 프로그램' 이라고 이해하면 된다! 서블릿에서 좀 더 확장시킨 개념이 스프링이라 생각하면 된다!! 스프링도 서블릿을 통해 동작을 하기 때문에! JSP (Java Server Page) 간단하게 HTML 안에 자..

[Spring] MVC (Model, View, Controller) 패턴이란??

MVC 패턴이란??? 모델-뷰-컨트롤러(model–view–controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다. 출처 - 위키피디아, mvc 패턴 사전적 의미는 위키피디아에서 가져왔지만 감이 아직 안잡힌다... 핵심만 간단히 풀어서 적어보려 한다.먼저 MVC패턴을 설..

반응형