본문 바로가기

안녕하세요!

프로그래밍 언어/JSP

JSP_22-11-11(2)

[ 리스너 ]

○ 이벤트 리스너

    - 컨테이너에서 발생하는 이벤트를 모니터링하다가 특정 이벤트가 발생하면 실행되는 특수한 서블릿

○ 웹 애플리케이션 실행에 필요한 정보를 제공 톰캣 시작/종료와 같은 특정 상황에 자동 동작하는 프로그램 구현할 때 사용

○ 초기화 매개변수와 연동

    - 톰캣이 시작될 때 'web.xml'의 ServletContex 초기화 매개변수를 읽어

    - 그에 따라 특정 객체를 초기화한 후 서블릿이나 JSP에 제공

○ 예제 프로그램 등을 배포할 때 샘플 데이터 제공

    - 프로그램 실행할 때 DB가 필요한 경우 미리 DB와 연결을 만들어 두거나

    - 테이블을 생성하고 샘플 데이터를 로딩하는 등의 작업을 자동으로 수행해서 추가적인 작업 없이 프로그램 실행 가능

○ 복잡한 환경 설정 제공

    - 프로그램 실행에 필요한 여러 정보

    - (DB, 다른 서비스 연동 정보, 관리자 계정 정보 등 프로그램 외부에서 변하는 정보를 주입하는 형태)가

    - 고정돼 있지 않고 운영하는 서버 상황에 따라 변경되어야 하는 경우, 이를 파일로부터 읽어와 JSP 및 서블릿 등에 제공

○ 특정 이벤트에 동작하는 기능 구현

    - 앱 애플리케이션을 실행할 때 함께 동작해야 하는 외부 프로그램이나 서비스의 동작 유무를 확인하고 자동으로 실행

○ 종류

    - ServletContextListener : 톰캣의 시작, 종료와 같은 이벤트에 동작하는 리스너

    - ServletContextAttributeListener : ServletContext 객체, 즉 aaplication scope에 속성값이 추가, 변경되는 상황에 동작

    - HttpSessionListener : 세션의 생성과 소멸 이벤트에 따라 동작

    - HttpSessionAttributeListener : 각 세션별로 속성이 추가되거나 변경될 대 동작하는 리스너, 개별 정보 모니터링에 유용


[ 필터 ]

○ 서블릿 필터

    - 웹 애플리케이션을 지원하기 위한 특수한 형태의 서블릿

    - 클라이언트 요청에 따라 서블릿이나 JSP가 실행되기 전 response 혹은 request 객체의 조작이나 추가적인 처리 가능

    - 기본적으로 특정 요청에만 동작

    - 여러 개의 필터가 정해진 순서에 따라 배치될 수 있는데, 클라이언트 요청 처리 이전에 먼저 실행됨

    - 단순히 기능만 구현하는 웹 프로그램의 경우, 필터 불필요

    - 애플리케이션 설계 관점에서 좀 더 유연하고 효과적인 애플리케이션 구현 및 운영이 필요할 때 필터 필요

○ 인증(Authentication)

    - 특정 페이지에서 로그인 여부나 특정 권한을 확인해야 할 때 컨트롤러에서 처리하는 방법

    - 로그인과 권한 확인과 같이 공통된 기능을 개별 컨트롤러에서 중복해서 구현하는 것은 좋지 않은 방법임

○ 로깅/감사(Logging and Auditing)

    - 특정 페이지 또는 기능에 대해 사용 현황을 모니터링하고 로그로 관리할 필요가 있을 때

    - 필터 통해 해당 요청 수행하기 전 로깅 처리

○ 국제화(Localization)

    - 다국어 처리는 프레임워크 등에서 제공하는 국제화 방법을 사용 가능

    - 필터를 이용할 경우 특정 페이지에 들어갈 메시지 등을 해당 언어로 변환해 전달 가능


[ 스프링 프레임워크 ]

○ 경량 컨테이너

    - 객체 생성, 소멸과 같은 생명 주기를 관리하며 스프링 컨테이너로부터 필요한 객체 얻기 가능

○ 제어의 역행 지원

    - 메서드나 객체의 호출 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자 코드 호출

○ 의존성 주입 지원

    - 각각의 계층이나 서비스 간에 의존성이 존재할 경우 프레임워크가 서로 연결해줌

○ 관점 지향 프로그래밍 지원

    - 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능 분리해 관리 가능


[ 스프링 주요 프로젝트 ]

○ 스프링 부트

    - 보다 간편하게 스프링 프로젝트 시작토록 해줌

    - 리액티브 스택

      1) 새로운 비동기 논블로킹 I/O 구조를 사용해 멀티코어 시스템 장점 살리고 대규모 사용자 접속 처리 유용한 구조

    - 서블릿 스택

      1) 서블릿 API에 기반한 동기 방식의 블로킹 I/O 구조를 사용

      2) 하나의 요청은 하나의 스레드로 처리됨

    - 리액티브 프로그래밍

      1) 변화에 반응하는 프로그램 모델

      2) 기본적으로 비동기 I/O 기반으로 데이터 흐름과 변화 전파에 중점을 둔 프로그래밍 패러다임

○ 스프링 데이터

    - 데이터베이스 연동을 위한 보다 편리한 개발 지원

    - 전통적인 JDBC에서부터 JAP(Java Persistence API)까지 모두 지원

○ 스프링 배치

    - 대량의 데이터 일괄 처리하기 위한 솔루션, 대형 시스템에서 주로 사용

    - 편리한 설정과 데이터 작업 시 발생하는 문제에 대한 대응 및 관리 기능 뛰어남

○ 스프링 시큐리티

    - 보안과 관련된 여러 기능 통합 제공

    - 모든 웹 애플리케이션이나 서비스 개발에 필요한 사용자 인증과 권한 부여를 위한 기본 인프라를 제공

○ 스프링 HATEOAS

    - REST API에 대해 하이퍼 미디어 기반으로 서비스 정보 제공하는 기능


[ IOC / DI / DL /AOP ]

○ IOC(Inversion of Control)

    - 제어의 역행

    - 기존의 프로그램은 main()처럼 프로그램 시작되는 곳에서 필요한 객체를 생성하고 생성된 객체의 메서드 호출하지만

    - IOC는 작업 수행하는 쪽에서 객체를 생성하는 일반적인 개념을 뒤집은 것

    - 프로그램 제어를 자신이 아닌 다른 곳에 위임하는 것

    - 컨테이너에 객체 생성과 공급을 위임하는 형태

○ DI(Dependency Injection)

    - 의존성 주입

    - 클래스 간의 의존관계를 Bean 설정에 기반해 컨테이너가 자동으로 연결

○ DL(Dependancy Lookup)

    - 저장소에 저당돼 있는 Bean에 접근하기 위해 개발자가 컨테이너에서 제공하는 API 이용해 Bean 찾는 방식

○ AOP(Aspect-Oriented Programming)

    - 관점 지향 프로그래밍

    - 횡단 관심사의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적

    - 코드 자체를 수정하지 않는 대신 기존 코드에 추가 동작인 어드바이스를 정의해 추가된 기능 실행됨

    - 어느 코드가 포인트 컷을 통해 수정되는 지를 별도로 지정하는 구조

 


[ 스프링 빈 ]

○ @Bean

    - 개발자가 컨트롤할 수 없는 외부 라이브러리를 Bean으로 등록할 때 사용(설정 클래스에서 사용)

○ @Component

    - 개발자가 직접 만든 클래스를 Bean으로 등록할 때 사용(선언된 Class를 Bean으로 등록)

○ @Controller, @Service, @Repository


 

728x90
반응형

'프로그래밍 언어 > JSP' 카테고리의 다른 글

JSP_22-11-07  (0) 2022.11.15
JSP_22-11-14  (0) 2022.11.15
JSP_22-11-11  (0) 2022.11.11
JSP_22-11-10  (0) 2022.11.10

loading