전체 글(622)
-
Websquare5에서 WAS Tomcat이 Websquare 라이센스를 읽지 못하는 문제 해결
배경WebSquare5 스튜디오를 설치한 다음에 실행 테스트를 위해서 톰캣 기반으로 서버를 실행시켰습니다. 실행하는 프로젝트는 WRM 프로젝트를 대상으로 수행하였습니다. WRM 톰캣 서버를 더블클릭한 다음에 Modules 탭에 들어가면 다음과 같이 Path 설정이 되어 있어야 합니다. 다음 화면을 보면 Path 열의 경로가 "/"인것을 볼수 있습니다. 이렇게 설정해야지 올바른 경로로 매핑됩니다. 설정에 따라서 "/WRM" 경로와 같이 설정될수 있는데, 해당 경로로 설정하면 올바른 페이지가 출력되지 않을수 있습니다. 서버를 실행하면 다음과 같은 오류가 발생할 수 있습니다. 다음 오류는 톰캣 서버가 WebSquare5 라이센스를 읽지 못하는 경우에 발생합니다. 위와 같은 에러가 발생하면 "http://loc..
2026.10.26 -
환율 업데이트 단위 테스트 실패 문제 해결
1. 배경환율을 업데이트하는 단위 테스트를 실행시 불규칙적으로 성공하거나 실패하는 경우가 발생함테스트 코드@DisplayName("환율 업데이트 - 응답 결과가 KRW, USD 2개인 경우 통화를 업데이트한다") @Test void should_update_rates_when_response_contains_krw_usd() { // given ExchangeJsonResponse response1 = new ExchangeJsonResponse(1, "KRW", "1", "한국 원"); ExchangeJsonResponse response2 = new ExchangeJsonResponse(1, "USD", "1,000", "미국 달러"); BDDMockito.gi..
2026.09.25 -
통합 테스트 실행중 Spring SecurityContextHolderStrategy 변경으로 인한 문제 해결
배경전체 통합 및 단위 테스트 실행시 AOP 관련 통합 테스트가 실패하고 있습니다.에러 출력 결과를 확인하였습니다. @Secured 애노테이션에 의한 AOP 기능 실행시 SecurityContext에 인증 정보가 존재하지 않아서 인증 관련 에러가 발생한 것입니다.하지만 ActiveStockAspectTest 통합 테스트 클래스만을 대상으로 테스트들을 실행하면 테스트가 통과되고 있습니다.원인 분석@Secured 애노테이션 수행 과정 분석@Secured 애노테이션이 추가된 메서드를 실행하면 해당 객체(Spring Bean 객체)는 프록시 객체가 되어 내부적으로 SecurityContext를 확인하여 인증 정보를 확인하고 사용자가 애노테이션에 설정된 역할을 가지고 있는지 확인합니다.예를 들어 Portfolio..
2026.08.03 -
배포 환경, 클라이언트 및 서버가 크로스 도메인 상태에서 XSRF-TOKEN 쿠키 값 읽기 에러 문제 해결
개요이 글에서는 개인 프로젝트 invest72에서 웹서버에 있는 자바스크립트가 웹 애플리케이션 서버가 발급한 XSRF-TOKEN 쿠키 값을 읽지 못하는 에러를 해결하는 경험을 소개합니다. 문제 해결 경험에서는 문제가 발생한 배경, 문제 원인, 해결 방법에 대해서 소개합니다. 배경현재 배포중인 웹서버와 웹 애플리케이션 상태는 다음과 같습니다.웹서버(React) : `https://invest72.web.app`웹 애플리케이션 서버(Spring) : `https://invest72-api.duckdns.org`CSRF 공격을 막기 위해서 웹 애플리케이션 서버에서 CSRF 토큰을 발급합니다. 이 토큰은 XSRF-TOKEN 쿠키에 값을 담아서 응답합니다.XSRF-TOKEN 쿠키의 속성은 `HttpOnly=fa..
2026.04.01 -
자바 인터페이스 메서드의 리턴타입 리팩토링
개요자바 인터페이스 메서드가 정의되어 있고, 몇개의 구현체 클래스가 이미 구현된 상태이고 클라이언트 코드에서 이미 호출되어 있는 상황입니다. 하지만 요구사항의 변경으로 인하여 특정 인터페이스의 메서드 리턴타입을 변경해야 하는 경우에 리팩토링하는 방법에 대해서 소개합니다.예제 소스코드에 대해서는 현재 개인 프로젝트인 invest72 프로젝트의 소스 코드를 활용합니다.현재 인터페이스 메서드 상황투자 금액을 의미하는 InvestmentAmount 인터페이스는 다음과 같습니다.이러한 상황에서 요구사항의 변경으로 getAmount() 메서드의 리턴타입을 BigDecimal에서 래퍼 클래스인 Money 클래스 타입으로 변경해야 합니다.public interface InvestmentAmount { Money ..
2026.03.13 -
PostgreSQL DECIMAL vs NUMERIC
개요PosgreSQL 컬럼 데이터 타입중에서 고정 소수점 타입에 해당하는 Numeric과 Decimal의 차이점을 분석합니다.Storage and syntaxPostgres는 DECIMAL 또는 NUMERIC 데이터 타입을 제공하고 있습니다. 해당 데이터 타입은 사용자 정의 정밀도(precision)을 제공하여 특정 자릿수까지 숫자를 정확하게 표현할 수 있습니다.Decimal 컬럼 정의 문법DECIMAL(precision, scale)가변 길이정수 부분 최대 131072자리, 소수점 최대 16383자리까지NUMERIC(precision, scale)가변 길이정수 부분 최대 131072자리, 소수점 최대 16383자리까지precision정밀도(precision)은 소수점을 기준으로 왼쪽과 오른쪽을 모두 포..
2026.03.12