[Spring] 횡단 로직 - AOP를 활용한 로그인 체크 기능 구현하기
·
Spring
횡단 로직 ? 횡단 로직은 애플리케이션의 여러 부분에 공통적으로 적용되는 기능을 말한다.로깅, 보안, 트랜잭션 관리 등이 이에 해당한다.횡단 로직을 효과적으로 관리하기 위해 AOP(Aspect-Oriented Programming)를 사용한다.AOP를 통해 코드 중복을 줄이고 관심사를 분리할 수 있다. 이번 글에서는 AOP를 이용하여 로그인 체크 로직을 구현하는 방법을 정리해보려고 한다.아래 코드는 지금 현재 진행중인 팀 프로젝트 코드의 일부이다. 기본 구성@LoginCheckpackage com.coma.app.view.annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.la..
[Spring] Multipart & 파일 업로드
·
Spring
MultipartFile스프링에서 파일 업로드와 관련된 기능은 MultipartFile 객체를 사용한다.  이 객체를 통해 클라이언트가 업로드한 파일을 받아 서버에 저장할 수 있다. 서버에 저장된 파일 경로는 나중에 조회하거나 다운로드할 때 활용하면 된다.import org.springframework.web.multipart.MultipartFile;MultipartResolver 설정스프링에서 multipart 요청을 처리하기 위해서는 MultipartResolver 빈이 설정 파일에 등록되어 있어야 한다.  MultipartResolver는 클라이언트에서 전송된 multipart/form-data를 해석해 파일 데이터를 처리할 수 있도록 도와주는 스프링의 컴포넌트이다. 이를 통해 파일 업로드를 더 ..
[Spring] DispatcherServlet, ViewResolver , DI 방식 정리
·
Spring
이번 포스팅에서는 DispatcherServlet과 ViewResolver의 역할, 의존성 주입 방식, 그리고 JSP에서 스프링으로 넘어가는 과정에 대해 다루려고 한다. DispatcherServlet의 기본 구조 DispatcherServlet은 스프링 프레임워크에서 요청을 처리하고, 적절한 컨트롤러로 전달한 뒤 응답을 제공하는 중심 역할을 담당하는 서블릿이다.이 서블릿은 FrontController 역할을 하며, 클라이언트의 요청을 받아들이고 HandlerMapping을 통해 적절한 컨트롤러를 찾아 처리 후, ViewResolver를 통해 응답을 생성한다.즉, FrontController == DispatcherServlet 라고 생각하면 된다.package com.yn.app.view.control..
[Spring] Spring DI와 비즈니스 로직
·
Spring
오늘은 패키지 구조와 비즈니스 로직에 대해 정리해봤다.보통 패키지는 3계층으로 나누는데, 회사명, 어플리케이션명(팀이나 프로젝트), 그리고 제공하는 서비스명으로 구성한다.아래 사진이 그 예시이다.핵심은 비즈니스 로직, 즉 비즈니스 메서드인데, 이것은 CRUD 작업이나 핵심 로직을 담당한다.  이 로직을 수행하는 방식은 서비스 계층을 통해 DAO를 호출하는 것과 같다.예를 들어, XXX.do 요청이 들어오면, FC에서 XxxAction 객체를 생성하고, Action 객체는 execute() 메서드를 호출해 다음 페이지로 이동할 수 있는 AF를 반환한다.이 과정에서 실질적으로 서비스 내용은 DAO가 수행하는데, 서비스는 이를 핸들링하는 역할이다. 서비스는 마치 폰이라면, DAO는 그 폰의 기능을 실제로 수행..
[Spring] Spring에서의 객체 관리: XML 설정 파일 vs 어노테이션 기반 DI
·
Spring
컨테이너란?컨테이너는 개발자를 대신해서 객체를 생성하고 관리하는 역할을 한다.서블릿 컨테이너인 톰캣이 new를 호출하여 서블릿 객체를 만들어주는 것처럼, Spring 컨테이너도 개발자 대신 객체를 생성한다.아래 코드는 Spring 컨테이너를 구동하는 방식이다.AbstractApplicationContext factory = new GenericXmlApplicationContext("applicationContext.xml"); 이 코드에서 컨테이너는 applicationContext.xml 파일을 읽고, 그 안에 정의된 객체(bean)를 생성한다.다음과 같은 방식으로 객체를 정의할 수 있다. 아래는 applicationContext.xml의 일부 코드이다.  하지만 XML 설정 방식은 점점 복..