Dev/Spring 11

Spring[IOC Container]

Spring[IoCContainer] 1. IoC 와 DI Inversion of Control( 제어역전 ) 이란 프로그램 코드 내에서 참조하려는 객체를 직접 생성 하지 않고 외부의 다른 존재가 생성하여 제공한다는 개념 외부의 다른 존재(객체) 를 Container 라고 하며 IoC 오브젝트 또는 IoC Container 라고 한다 IoC 의 구현 방법 Dependency Lookup 객체가 JNDI를 이용하여 직접 의존하고 있는 객체를 찾는다. 객체가 JNDI 코드를 구현해야 한다. Exception 처리 구조가 복잡 EJB, Apache Avalon Dependency Injection 컨테이너 자체가 lookup을 한다.(객체 내에서 lookup하는 코드가 사라짐) 컨테이너에 의존적인 코드를 작성..

Dev/Spring 2021.10.17

Spring[AOP - Aspect Oriented Programming]

Spring[AOP - Aspect Oriented Programming] 1. AOP 개요 (A)spect (O)riented (P)rogramming : 관점 지향 프로그래밍 가장 기초가 되는 개념은 관심의 분리(Separation of Concern) (A)spect (O)riented (P)rogramming : 관점 지향 프로그래밍 가장 기초가 되는 개념은 관심의 분리(Separation of Concern) 핵심관심 : 시스템의 핵심 가치와 목적이 그대로 드러난 관심영역 횡단관심: 핵심관심 전반에 걸쳐 반복적으로 나오게 되는 로깅, 트랜잭션, 보안, 인증, 리소스 풀링, 에러체크 등의 관심영역 관심의 분리: 여러 핵심관심에 걸쳐 등장하는 횡단관심을 분리하여 독립적인 모듈로 만들고 핵심관심이 실..

Dev/Spring 2021.10.17

Spring[@Valid]

spring[@Valid] 1. @Valid 스프링에서는 서블릿 2.3 표준스펙 중 JSR-303 Validator 를 확장하고 Annotation 기반으로 제공하고 있다. mvc:annotation-driven 을 통해 간단하게 Bean Validation을 사용할 수 있다. 검증을 위한 Bean에는 @Valid 를 사용하여 자동 검증을 하게 된다. 실제 검증은 모델 오브젝트에 달린 제약조건 Annotation을 이용해 검증 작업이 이루어 진다. 2. Constraint Annotation JSR 303 Spec 기본 제공 @AssertFalse : 거짓인가? @Max : 지정 값 이하인가? @AssertTrue : 참인가? @Min : 지정 값 이상인가? @DecimalMax : 지정 값 이하 실수인..

Dev/Spring 2021.10.17

Spring[Logging]

Spring[Logging] 1. 로깅이란? 비 기능적 요구사항 ( Non Functional Requirement ) 하지만, 프로그램 개발 중 디버깅 및 개발완료 후 문제점 추적 및 분석을 위해 필수적으로 갖추어야 할 요구 조건 로그(Log) 는 프로그램 개발이나 운영 시 발생하는 문제점을 추적 하거나 운영 상태를 모니터링 하는 정보 로깅(logging)이란 로그(log)를 생성하도록 시스템을 작성하는 활동 얻을 수 있는 것 재현하기 힘든 ( 테스트 환경이 아닌 개발 완료된 환경에서 발생하는 ) 버그에 대한 유용한 정보를 제공 성능에 관한 통계와 정보를 제공할 수 있다. 2. 자바 로깅 java.util.logging Apache 의 (J)arkarta (C)ommons (L)ogging Log4J ..

Dev/Spring 2021.10.17

Spring[MultipartResolver]

Spring[MultipartResolver] 1. 설정 spring-servlet.xml 에 CommonMultipartResolver 설정을 해준다. pom.xml 에 common-fileupload, common-io 라이브러리 dependency를 추가 commons-fileupload commons-fileupload 1.2.1 commons-io commons-io 1.4 2. [실습] 업로드 폼 구성 (views/fileupload/form.jsp) 파일 업로드 예제 email: 파일1: 파일2: (c)opyright 2014 3. [실습] 업로드 결과 페이지 (views/fileupload/result.jsp) Upload completed 다시 업로드 하기 (c)opyright 2014 ..

Dev/Spring 2021.10.16

Spring[Interceptor-Annotation활용]

Spring[Interceptor-Annotation활용] 1. 인터셉터란? Spring에서 HTTP Request와 HTTP Response를 Controller 앞과 뒤에서 가로채는 역할을 한다. Servlet의 앞과 뒤에서 HTTP Request와 HTTP Response를 가로채는 필터와 유사 하다. Interceptor를 구현하기 위해서는 HandlerInterceptor 인터페이스를 구현하여야 한다. 서블릿 필터와 차이 2. 구현실습 1) MyInterceptor 구현 HandlerInterceptor 인터페이스의 3개의 메소드를 구현한다. preHandle() 메소드는 컨트롤러가 호출되기 전에 실행된다. handler 파라미터는 HandlerMapping 이 찾아준 컨트롤러의 메소드를..

Dev/Spring 2021.10.16

Spring [DefaultServlet-ViewResolver-Exception]

Spring[DefaultServlet-ViewResolver-Exception] 01. DefaultServlet Handler 등록 1.1 DefaultServlet 위임 1.1.1 정적 자원 접근 실패 html, css, js 등의 파일 접근에 실패한다. DispatcherServlet 이 모든 URL처리에 서블릿 매핑을 하였기 때문에 톰캣은 정적 자원에 대한 URL처리도 DispatcherServlet에게 넘기기 때문이다. ( 즉, DefaultServlet에 위임을 하지 못한다. ) 실습으로 알아 보자. 1.1.2 Spring MVC 에서 DefaultServlet 위임 처리하기 HandlerMapping이 URL과 컨트롤러의 메소드(핸들러) 와의 매핑 정보를 가지고 있다. HandlerMapp..

Dev/Spring 2021.10.16

Spring @MVC, Data Access, MyBatis

Spring @MVC DATA ACCESS 1. datasource (Connection Pool) JDBC를 통해 DB를 사용하려면, Connection 타입의 DB 연결 객체가 필요하다. 엔터프라이즈 환경에서는 각 요청마다 Connection을 새롭게 만들고 종료시킨다. 애플리케이션과 DB사이의 실제 커넥션을 매번 새롭게 만드는 것은 비효율적이고 성능저하 풀링(pooling) 기법 사용 정해진 개수의 DB Connection Pool에 준비하고 애플리케이션 요청때 마다 꺼내서 할당 하고 돌려받아 pool에 저장. Spring에서는 DataSource를 하나의 독립된 빈으로 등록하도록 강력하게 권장. 엔터프라이즈 시스템에서는 반드시 DB 연결 풀 기능을 지원하는 DataSource를 사용해야 한다. 종..

Dev/Spring 2021.10.15

Spring[Message-Converter]

Spring[Message-Converter] 1. 메시지 컨버터란? XML 이나 JSON을 이용한 AJAX 기능이나 웹서비스 개발에 이용 HTTP 요청 메세지 본문( Request Body ), HTTP 응답 메세지 본문( Response Body )을 통째로 메세지로 다루는 방식 파라미터의 @RequestBody, 메소드에 @ResponseBody를 이용 메세지 컨버터는 AnnotationMethodHandlerAdapter를 통해 하나 이상의 컨버터가 등록, 선택 동작하게 된다. 응답(Response)의 경우 해당 핸들러 메소드에 @ResponseBody 와 함께 반환되는 객체의 종류에 따라 메세지 컨버터가 선택되고 응답바디 내용이 채워져 브라우저로 전달된다. 2. 컨버터 등록 에 mvc:messa..

Dev/Spring 2021.10.15

Spring 자세히 알아보기 DispatcherServlet , MVC

Spring 자세히 알아보기 01.DispatcherServlet 과 MVC 사용자의 요청을 DispatcherServlet이 받는 다. 요청을 처리해야 하는 컨트롤을 찾기 위해 HandlerMapping에게 질의를 하고 HandlerMapping은 컨트롤 객체에 매핑되어 있는 URL를 찾아낸다. DispatcherServlet은 찾은 컨트롤에게 요청을 전달하고 Controller는 서비스 계층의 인터페이스를 호출하여 적절한 비지니스를 수행한다. 컨트롤러는 비지니스 로직의 수행결과로 받아낸 도메인 모델 객체와 함께 뷰이름을 ModelAndView 객체에 저장하여 반환한다. DispatcherServlet은 응답할 View를 찾기 위해 ViewResolver에게 질의를 한다. DispatcherServle..

Dev/Spring 2021.10.15