알아가기/Spring 7

[Spring] Tomcat 실행 에러 해결 java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

SEVERE: Error configuring application listener of class [org.springframework.web.context.ContextLoaderListener] java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 얼마전에도 이렇게 떳었다. 검색을 통해 해결을 하였지만 어떻게 했는지 기억을 더듬어보니 가물가물한 상태였기에 다시 검색하여 해결하면서 기록해둔다. 6줄 요약 1. 프로젝트 우클릭 -> Properties 2. Deployment Assembly 선택 -> Add 클릭 3. Java Build Path Entries 선택 -> Next 클릭 4. Mave..

알아가기/Spring 2023.12.08

[Spring] 임의의 서버 포트 번호 (random server port number)

톰캣에서 서버 포트 번호를 지정하지 않고 랜덤 하게 생성하는 방법이다. 동일한 애플리케이션을 서로 다른 인스턴스에서 실행할 때 포트 충돌이 일어나는 것을 방지한다. automation을 통해 애플리케이션을 실행할 때 유용할 수 있다. 기본 포트 설정 application.properties 에 포트를 지정하지 않은 기본값 지정된 포트 설정 application.properties 에 원하는 포트를 지정 server.port=8181 랜덤 포트 설정 application.properties 에 server.port를 0으로 지정하여 랜덤 포트 넘버를 부여 1트. 포트 넘버 3474 server.port=0 2트. 포트 넘버 3505 3트. 포트 넘버 3541

알아가기/Spring 2023.11.18

[Spring] Advice Types inside AOP

Advice Types inside AOP 알아보자 Before advice: 메서드가 호출되기 전에 실행. ex) 메서드 호출 전에 인증을 수행하거나, 로그를 기록하는 등의 작업을 수행. @Before("execution(* *.*(..))") public void beforeAdvice() { // 인증을 수행한다. } AfterReturning advice: 메서드가 정상적으로 종료된 후 실행. ex) 메서드 호출 결과를 캐싱하거나, 성능 측정을 수행하는 등의 작업을 수행. @AfterReturning("execution(* *.*(..))") public void afterReturningAdvice(Object returnValue) { // 메서드 호출 결과를 캐싱한다. } AfterThrow..

알아가기/Spring 2023.11.08

[Spring] Eager Instantiation Vs Lazy Instantiation

Eager Instantiation 즉시 생성: 인스턴스는 필요한 시점이 아니라 미리 객체 생성 시 초기화 미리 계산: 필요하지 않은 정보까지 미리 계산하고 저장 높은 메모리 사용량: 모든 인스턴스가 미리 생성되므로 메모리 사용량이 높음 높은 초기화 비용: 모든 객체가 초기화되므로 초기화 비용이 높을 수 있음 예측 가능한 성능: 인스턴스가 필요한 시점에 사용 가능하므로 성능 예측이 용이 복잡한 객체 그래프: 복잡한 객체 그래프를 구축하는 경우 메모리와 성능 문제가 발생할 수 있음 주로 단순한 응용 프로그램에 적합 Lazy Instantiation 필요할 때 생성: 인스턴스는 실제로 필요한 시점에 생성 지연 계산: 필요한 정보만 생성하고 저장하므로 불필요한 계산을 피할 수 있음 낮은 메모리 사용량: 필요한..

알아가기/Spring 2023.11.05

[Spring] SecurityFilterChain 로그인 후 특정 주소로 이동

Spring Security공식 문서에 나온 SecurityFilterChain 작동 방식은 기본적으로 메인 또는 로그인이 필요한 페이지에 접속하게 되면 로그인 정보가 없을때 로그인 페이지로 이동시킨다. 그 후, 아이디 및 비밀번호 입력 후 로그인을 하게 되면 이전 로그인 직전의 페이지로 되돌아간다. 현재 내가 구현하는 기능에서는 이 작동방식이 맞지 않다. 내가 필요한 기능은 로그인 페이지에서 정상 로그인 되면 정해진 특정 페이지로만 이동이 일어나야 한다. 따라서 필요한 추가 코드를 테스트해보고 기록해 둔다. 1. response.sendRedirect() 방법 구간 코드 .formLogin((form) -> form .loginPage("/login") .permitAll() .successHandle..

알아가기/Spring 2023.08.30

[Spring] Spring Boot Actuator 사용

Spring Boot Actuator는 Spring Boot 애플리케이션의 운영과 관리를 돕는 기능을 제공하는 모듈이다. 이 모듈을 사용하면 애플리케이션의 다양한 측면을 모니터링하고 관리할 수 있다. Actuator는 애플리케이션의 상태, 메트릭, 로그, 환경 설정 등에 대한 정보를 노출하며, 개발자나 운영팀이 실시간으로 애플리케이션의 상태를 파악하고 문제를 진단하는 데 도움을 준다. 주요 기능 1. Application 정보 노출: 애플리케이션의 버전, 이름, 설명 등의 기본 정보를 노출할 수 있다. 2. 메트릭 및 상태 정보: 애플리케이션의 상태를 확인할 수 있는 여러 메트릭과 지표를 노출한다. 예를 들어, HTTP 요청 수, 메모리 사용량, 프로세스 상태 등을 모니터링할 수 있다. 3. 환경 변수와..

알아가기/Spring 2023.08.29

[Spring] SpringBootServletInitializer 알아보기 (ApplicationContextException: Unable to start 에러 해결)

IntelliJ에서 생성한 프로젝트를 STS에서 실행하려는데 `ApplicationContextException: Unable to start` 에러가 출력되었다. 어플리케이션을 실행하는 클래스에 `extends SpringBootServletInitializer`를 추가하니 해결이 되었다. 발생한 오류를 발판삼아 SpringBootServletInitializer에 대해 알아본다. @SpringBootApplication public class YourAppliationName extends SpringBootServletInitializer{ public static void main(String[] args) { SpringApplication.run(YourAppliationName.class, ..

알아가기/Spring 2023.08.05