전체 글

Servlet Filter & Spring Interceptor
Servlet Filter와 Spring Interceptor는 웹과 관련된 공통 관심 사항에 대한 내용을 처리하기 위한 기능이며, 차이점은 어디서 제공하는 기능이냐? 적용되는 위치가 어디냐?로 나누어 볼 수 있다. 여기서 공통 관심 사항이란 단어를 보고서 AOP(Aspect Oriented Programming)를 떠올릴 수 있겠으나 웹과 관련된 공통 관심 사항의 경우에는 HTTP header나 URL 정보 등이 필요한데 이러한 정보를 FIlter 및 Interceptor에서 제공하기 때문에 이를 이용하는 것이 좋다. 웹과 관련된 공통 관심 사항의 대표적인 예시로는 어떠한 요청이 들어왔는지를 기록하기 위한 로깅 기능 또는 특정 요청에는 인증/인가된 유저만 접근이 가능하도록 하는 인증/인가 기능이 있다...
JPA - 엔티티 수정(merge, dirty check)에 대한 내용 정리
JPA(Java Persistence API -> Jakarta Persistence API)를 사용할 때 엔티티를 수정해야 할 때 아래처럼 2가지 방법이 있다. 병합(merge) 변경 감지(Drity checking) 아주 간단하게 정리하자면 "병합"은 수동, "변경 감지"는 자동이라고도 볼 수 있다. 사실 두 방법에 대한 중요한 차이점은 직접 명시하니 자동으로 해주니가 아닌 "어떻게 동작하는가?"라고 볼 수 있다. 일단 병합을 사용한 엔티티 수정에 대해 정리해보자 병합(merge) 병합의 경우 수정된 엔티티를 직접 merge() 메서드를 통해 반영시킨다. 이 때 엔티티의 모든 속성을 갱신하게 되기 때문에 비어있는 속성이 있는 경우 Null이 DB에 반영 될 수 있다. 병합을 사용해야 하는 경우는 준영..
Mac] kill processor script
Mac에서 IntelliJ를 사용하며 Spring 프로젝트를 실행시키는 경우에 종종 프로세스가 정상적으로 종료가 안되어 8080 포트가 계속 사용되면서 재실행이 안되는 경우가 발생한다. 그렇다고 이러한 경우가 매우 자주 발생하는 것은 아니다 보니 8080 포트를 사용 중인 프로세스를 찾아서 죽이는 방법을 까먹게 되더라.. 그때마다 다시 찾아서 사용하기가 불편해서 그냥 스크립트로 만들어서 쓰기로.. 그렇게 만든 스크립트를 만든 김에 공유하고자 블로그에 남겨둡니다. 쉘 스크립트 코드 더보기 #!/bin/sh PORT=$1 if [ -z "$PORT" ]; then PORT=8080 fi echo "Port : $PORT" if [[ "$PORT" = *[a-zA-Z]* ]]; then echo "Port i..