필터와 인터셉터 필터 는 서블릿에서 제공하는 기능이며, 인터셉터 는 스프링에서 제공하는 기능이다. 필터란? 웹 애플리케이션을 구성하다보면 공통적으로 처리하는 로직이 존재하게 된다. 예를들어, 어떠한 페이지는 로그인 에 성공하는 유저만 접근할 수 있다고 하자. 그럼 해당 페이지의 컨트롤러마다 로그인 에 성공했는지 검증하는 코드가 필요하게 된다. 이렇게 여러 로직에서 공통으로 관심이 있는 것을 공통 관심사 라고 한다. 이러한 공통 관심사를 해결하는 방법에는 스프링의 AOP를 사용하는 방법도 있지만 웹과 관련된 공통 관심사는 서블릿 필터 나 스프링 인터셉터 를 사용하는 것이 더 유리한 경우가 있다. 필터의 흐름은 다음과 같다. HTTP 요청 -> 서블릿 컨테이너 -> 필터 -> 서블릿 -> 컨트롤러 필터를 적..
직접 공부하며 정리한 내용이라 틀린 내용이 있을 수 있습니다! JavaConfig방식을 통해 스프링이 구동되는 순서를 알아보자. 먼저 xml설정일 때의 예로, 전체적인 그림을 보면 다음과 같다. 웹 어플리케이션 실행 웹 어플리케이션이 실행되면 톰캣에 의해 web.xml이 로딩되면서 스프링 구동된다. Java Config방식에서는 web.xml의 역할을 할 클래스를 만들어야 한다. 이는 WebApplicationInitializer 인터페이스를 구현하여 onStartup 메소드를 작성하면 된다. public class WebApplication implements WebApplicationInitializer { @Override public void onStartup(ServletContext servl..
프로젝트를 진행하던 중에 예외에 따라 응답값을 다르게 내려줘야 하는 상황이 생겼다. 기존에는 예외처리가 필요한 코드를 try-catch 문을 통해 일일히 처리했지만 @ControllerAdvice 를 이용하면 더 깔끔하게 예외를 처리할 수 있다고 한다. ControllerAdvice란? @Controller 혹은 @RestController 에서 발생한 예외를 한 곳에서 처리할 수 있도록 도와준다. 일반적인 API서버는 컨트롤러에서 Service 객체를 통해 비즈니스 로직을 처리하게 된다. 그리고 만약 비즈니스 로직 수행 중 예외가 발생할 경우 컨트롤러 단 까지 예외가 넘어오게 된다. @ControllerAdvice 는 이렇게 컨트롤러 단에서 발생한 예외들을 한 곳에서 처리할 수 있도록 도와준다. 이걸 ..
단위테스트란? 단위테스트(Unit Test)는 가장 작은 하나의 모듈을 기준으로 독립적으로 진행 되는 테스트이다. 이는 하나의 클래스 혹은 메소드가 될 수 있다. 하나의 기능이 올바르게 동작하는지를 독립적으로 테스트 하는 것으로 어떤 기능을 실행했을 때 기대하는 결과가 나오는지 테스트하는 방법이다. 왜 작성해야 할까 작은 기능들이 하나 하나씩 모여 하나의 애플리케이션을 이루게 된다. 만약 기능들 중 하나라도 문제가 있다면 이는 애플리케이션 전체의 문제로 이어질 수 있다. 만약 단위테스트가 작성되었고 정상적으로 테스트를 통과한다면 다른 곳에서 이 기능을 가져다 쓸 때도 이미 테스트가 되었기에 이 기능에 대한 걱정은 하지 않아도 된다. 또한 단위테스트는 환경에 독립적으로 작성되기에 빠르게 실행할 수 있다는 ..
Spring Boot에서 WebSocket, STOMP을 사용해보자. STOMP란? STOMP는 Publish-Subscribe 방법을 지원한다. STOMP를 사용하지 않고도 WebSocket사용은 얼마든지 가능하지만 이 경우 직접 세션을 관리하는 등 추가 작업이 필요할 수 있다. STOMP를 사용하면 이런 작업을 보다 편리하게 이용할 수 있다. STOMP 설정 먼저 의존성을 추가하자. implementation 'org.springframework.boot:spring-boot-starter-websocket' 그 후에 WebSocketMessageBrokerConfigurer 의 구현체를 만들어 웹소켓 설정을 해야 한다. @EnableWebSocketMessageBroker @Configuration..
- Total
- Today
- Yesterday
- boj
- 투포인터
- node.js
- 예외처리
- 중앙대학교
- typeORM
- Computer Architecture
- 백준
- 그리디
- BFS
- 구현
- dfs
- 자바스크립트
- 세그먼트 트리
- ReactNative
- 자바
- 벨만포드
- 백트래킹
- 알고리즘
- 스레드
- 동적계획법
- nodeJS
- 그래프
- java
- nestjs
- 재귀
- 컴퓨터 통신
- 시뮬레이션
- 컴퓨터 구조
- nest.js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |