good_da22 's devLog

spring 9

SpringBoot & Swagger

SpringBoot Spring의 경우 Application을 개발하려면 사전에 많은 작업(library 추가, dependency 설정, 그 외 SpringFramework가 처리해야 할 여러 가지 구성 및 설정 파일 등)이 필요 SpringBoot의 장점 project에 따라 자주 사용되는 library들이 미리 조합되어 있다. 복잡한 설정을 자동으로 처리 내장 서버를 포함하여 tomcat과 같은 WAS를 추가로 설치하지 않아도 개발 가능 WAS에 배포하지 않고도 실행할 수 있는 JAR파일로 Web Application 개발 가능 Spring Starter Project를 이용하여 쉽게 SpringBoot 기반 프로젝트 생성 가능 project 생성 구조 및 주요 구성 폴더 / 파일 src/main/..

REST API

REST API OPEN API (Application Programming Interface) OPEN API는 프로그래밍에서 사용할 수 있는 개방되어 있는 상태의 Interface 많은 사이트들이 가지고 있는 데이터를 외부 응용 프로그램에서 사용할 수 있도록 OPEN API를 제공 OPEN API와 함께 거론되는 기술이 REST, 대부분의 OPEN API는 REST 방식으로 지원 REST (Representational State Transfer) 2000년도 로이 필딩(Roy Fielding)의 박사학위 논문에 최초로 소개 REST 는 'Representational State Transfer'의 약어로 하나의 URI는 하나의 고유한 리소스(Resource)를 대표하도록 설계된다는 개..

Interceptor

Interceptor HandlerInterceptor를 통한 요청 가로채기 Controller가 요청을 처리하기 전/후 처리 로깅, 모니터링 정보 수집, 접근 제어 처리 등의 실제 Business Logic과는 분리되어 처리해야 하는 기능들을 넣고 싶을 때 유용 interceptor 여러 개 설정 가능, 순서 주의 HandlerInterceptor 제공 default method boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) fasle를 반환하면 request를 바로 종료 void postHandle(HttpServletRequest request, HttpServletResponse ..

Spring Web MVC 2

Spring Web MVC Controller @Controller 와 @RequestMapping 선언 스프링 4.2버전까지는 아래와 같은 방식으로 작성 @RequestMapping(value = "URL", method = RequestMethod.GET or RequestMethod.POST) 이후 버전에서는 @GetMapping("URL") 또는 @PostMapping("URL") 사용 Method 단위의 mapping이 가능 DefaultAnnotationHandlerMapping과 AnnotationHandlerAdapter를 사용함 Spring 3.0부터는 기본 설정이므로 별도의 추가 없이 사용 가능 Controller Class는 Client의 요청을 처리 @Controller 선언 Cla..

Spring Web MVC

Spring Web MVC MVC(Model-View-Controller) Pattern 어플케이션의 확장을 위해 Model, View, Controller 세 가지 영역으로 분리 컴포넌트의 변경이 다른 영역 컴포넌트에 영향을 미치지 않음(유지보수 용이) 컴포넌트 간의 결합성이 낮아 프로그램 수정이 용이(확장성이 뛰어남) 장점 화면과 비즈니스 로직을 분리해서 작업 가능 영역별 개발로 인하여 확장성이 뛰어남 표준화된 커드를 사용하므로 공동작업이 용이하고 유지보수성이 좋음 단점 개발과정이 복잡해 초기 개발속도가 늦음 초보자가 이해하고 개발하기 다소 어려움 Model 어플리케이션 상태의 캡슐화 상태 쿼리에 대한 응답 어플리케이션의 기능표현 변경을 view에 통지 View 모델을 화면에 시각적으로 표현 모델에게..

AOP (Aspect Oriented Programming)

AOP (Aspect Oriented Programming) OOP(Object Oriented Programming)에서 모듈화의 핵심 단위는 클래스 AOP(Aspect Oriented Programming)에서 모듈화의 단위는 Aspect Aspect는 여러 타입과 객체에 거쳐서 사용되는 기능(Cross Cutting(공통 관심사항), Core Concern(핵심 관심사항), 트랜잭션 관리 등)의 모듈화 Spring Framework 의 필수 요소는 아니지만, AOP 프레임워크는 Spring IoC를 보완 AOP 용어 Aspect 여러 클래스에서 공통적으로 구현되는 관심사(Concern)의 모듈화 JoinPoint 메서드 실행이나 예외처리와 같은 프로그램 실행 중의 특정 지점, Spring에서는 메서..

Dependency Injection

Dependency Injection 의존성 주입 Bean 생성범위 싱글톤 빈(Singleton Bean) 스프링 빈은 기본적으로 싱글톤으로 만들어진다. 따라서 컨테이너가 제공하는 모든 빈의 인스턴스는 항상 동일 컨테이너가 항상 새로운 인스턴스를 반환하게 만들고 싶을 경우 scope를 prototype으로 설정 singleton 스프링 컨테이너당 하나의 인스턴스 빈만 생성(default) prototype 컨테이너에 빈을 요청할 때마다 새로운 인스턴스 생성 request HTTP Request 별로 새로운 인스턴스 생성 session HTTP Session 별로 새로운 인스턴스 생성 Spring Bean 설정 XML Document, Annotation, Java Code 메타 정보의 표현 방식 Bean..

IoC & Container

Ioc & Container IoC (Inversion of Control, 제어의 역행) 객체지향 언어에서 Object간의 연결 관계를 런타임에 결정 객체 간의 관계가 느슨하게 연결됨(loose coupling) IoC의 구현 방법 중 하나가 DI(Dependency Injection) IoC 유형 Dependency Lookup 컨테이너가 lookup context를 통해서 필요한 Resource나 Object를 얻는 방식 JNDI Lookup JNDI 이외의 방법을 사용한다면 JNDI 관련 코드를 오브젝트 내에서 일일이 변경해주어야 한다. Lookup 한 Object를 필요한 타입으로 Casting 필요 Naming Exception을 처리하기 위한 로직 필요 Dependency Injection ..

Spring Framework

Spring Framwork Spring Framwork 등장 배경 기존 EJB(Enterprise JavaBean) 을 사용하여 애플리케이션 작성을 쉽게 할 수 있다. Low Level의 트랜잭션이나 상태관리, 멀티 쓰레딩, 리소스 풀링과 같은 복잡한 Low Level의 API를 이해하지 못해도 애플리케이션 개발 가능 하지만 현실에서 반영이 어려움 코드 수정 후 반영하는 과정 자체가 번거롭다. 기능은 좋지만 복잡한 스펙으로 인한 개발 효율성 감소 애플리케이션 테스트를 위해선 반드시 EJB 서버가 필요 웹 사이트가 점점 커지면서 엔터프라이즈급의 서비스가 필요 세션빈에서 Transaction 관리 용이 로긴, 분산처리, 보안 등 자바 진영에서는 EJB가 엔터프라이즈급 서비스로 각광 EJB 스펙에 정의된 인..