전체 글 썸네일형 리스트형 스프링 정리 11 - 필터와 인터셉터 필터와 인터셉터는 요청과 응답의 앞, 뒤에 끼어들어 특정 작업을 수행하며MVC 흐름을 한 단뎨 더 세밀하게 제어할 수 있게 도와줍니다. FilterInterceptor위치DispatcherServlet 전에 실행DispatcherServlet 이후, Controller 실행 전/후에 실행목적인증, 로깅, 인코딩 등 요청 전처리인증, 권한, 로깅, 실행 시간 측정 등구현 위치javax.servlet.Filter 구현HandlerInterceptor 구현설정 방법FilterRegistrationBean으로 등록WebMvcConfigurer에서 등록요청 정보 접근HttpServletRequest, HttpServletResponseHandlerMethod, ModelAndView 등도 접근 가능필터는 손님이 .. 더보기 스프링 정리 10 - MVC 요청 흐름 [브라우저] ↓ (HTTP 요청)[DispatcherServlet] ← 프론트 컨트롤러 ↓[HandlerMapping] ← URL → Controller 매핑 ↓[Controller] ← 사용자 요청 처리 (주문) ↓[Service] ← 비즈니스 로직 (요리사) ↓[Repository] ← DB 접근 (재료 창고) ↓[DB] ↑[Model] ← View에 전달할 데이터 ↑[ViewResolver] ← 어떤 화면(View)을 보여줄지 결정 ↑[DispatcherServlet] ↑ (HTML, JSON 응답)[브라우저]그간 공부한 내용 + 실제 요청 흐름에 대한 도식표입니다.해당 표.. 더보기 스프링 정리 9 - 기본 구조 스프링 부트 기반 프로젝트 기본 구조입니다.// 계층 중심 구조src/ └─ main/ └─ java/ └─ com.example.demo/ ├─ DemoApplication.java ← main() ├─ controller/ │ └─ MemberController.java ← HTTP 요청 ├─ service/ │ └─ MemberService.java ← 비즈니스 로직 ├─ repository/ │ └─ MemberRepository.java ← 데이터 저장소 .. 더보기 스프링 정리 8 - 설정과 환경 분리 스프링은 프로파일 개념과 application.properties 또는 application.yml 로 개발 환경, 테스트 환경, 운영 환경에 따라 DB 주소, 포트, 캐시 설정, 로깅 레벨 등을 다르게 할 수 있습니다.// application.yml 기본 구조spring: datasource: url: jdbc:mysql://localhost:3306/dev_db username: dev_user password: dev_pw profiles: active: localprofile 에 따라 환경을 다르게 분리할 수 있습니다.// application-local.ymlspring: datasource: url: jdbc:mysql://localhost:3306/dev_d.. 더보기 스프링 정리 7 - 예외 처리 스프링에서는 예외를 직접 핸들링하여 사용자에게 의미 있는 응답과 메세지를 줄 수 있게 해줍니다.예외 발생 및 처리 흐름은 다음과 같습니다.1. throw new CustomException(...) 예외 발생public class NotFoundException extends RuntimeException { public NotFoundException(String message) { super(message); }}public Member findById(Long id) { return repository.findById(id) .orElseThrow(() -> new NotFoundException("회원이 존재하지 않습니다."));}2. @Controller.. 더보기 스프링 정리 6 - AOP AOP 란 Aspect Oriented Programming 의 줄임말로공통 관심사를 분리하는 프로그래밍 기법입니다.어떤 클래스든 핵심 로직 외에 꼭 따라 붙는 공통 로직이 있는데요트랜잭션로그 출력실행 시간 측정보안 검사예외 처리 등이 여기에 속합니다.이 모든 것을 모든 클래스에 계속 반복하는 것은 비효율적입니다.따라서 공통된 부가 로직을 따로 분리하여 필요한 곳에 자동을 끼워넣는 방식이 AOP 입니다.모든 음식을 만들 때에 조리 시간 및 남은 재료 기록하기판매 횟수 기록하기 등의 절차가 있다면 이런 것을 직접 매번하는 것이 아니라우리는 요리를 할 뿐 공통 부가 로직이 기록 등의 절차를 대신 해주는 것이 AOP 입니다.@Component@Aspectpublic class TimeTraceAop { .. 더보기 스프링 정리 5 - 트랜잭션 트랜잭션이란 데이터베이스의 작업 단위를 말합니다.여러 개의 작업을 하나로 묶어서 전부 성공하거나 전부 실패하게 하는 것입니다.이로인해 원자성을 보장합니다.사용자가 상품을 결제하면1. 주문 정보를 저장하고, 2. 결제 정보를 저장하고, 3. 포인트를 차감합니다.그런데 이 셋 중 하나라도 실패하면 나머지 진행 작업도 취소 되어야 하는 것 입니다.데이터 불일치 문제를 생기지 않도록 하기 위함이지요.요리로 따지자면 트랜잭션은 세트메뉴라고 볼 수 있겠습니다우리가 세트 메뉴를 주문했는데 세트 구성 중 하나라도 빠지면 세트 메뉴라고 할 수 없고손님에게 세트 메뉴라고 내어 줄 수도 없겠죠?이 처럼 세트는 전부 나와야 의미가 있고,트랜잭션도 모든 작업이 성공해야만 하나의 작업으로 인정됩니다.스프링은 @Transactio.. 더보기 스프링 정리 4 - 계층형 구조 스프링 애플리케이션은 3계층 구조로 나뉘어져 있습니다Controller : 웹 계층Service : 비즈니스 계층Repository : 데이터 계층각 계층을 나누는 이유는 역할이 명확해져 코드의 가독성이 증대되고하나의 책임만 가질 수 있게하며 계층 단위로 단위 테스트를 진행할 수 있게 합니다Controller는 HTTP 요청을 받고 응답을 반환하는 역할을 합니다.주로 @Controller와 @RestController를 사용하는데요프론트를 대응하는 의미로 손님에게 주문을 받고 음식을 가져다 주는 웨이터로 볼 수 있겠습니다.@RestControllerpublic class MemberController { private final MemberService service; public Member.. 더보기 이전 1 2 3 4 ··· 26 다음