본문 바로가기

Spring9

[SpringBoot] Testcontainers로 통합테스트 환경 구성하기 - 개념과 사용법 Testcontainers란?Testcontainers는 Docker 컨테이너로 구동되는 실제 서비스와의 통합 테스트 환경을 자동으로 구성하고 시작하기 위해 쉽고 가벼운 API를 제공하는 테스트 라이브러리이다. Testcontainers를 사용하면 목(mock)이나 인메모리 서비스 없이 운영환경에서 사용하는 것과 동일한 유형의 서비스와 통신하는 테스트를 작성할 수 있다. 통합 테스트의 어려움 - Testcontainers를 사용해야 하는 이유오늘날 소프트웨어 시스템은 다양한 기술과 도구를 활용하여 복잡한 비즈니스 문제를 해결한다. 대부분의 소프트웨어 시스템은 독립적으로 작동하지 않고 데이터베이스, 메시징 시스템, 캐시 서버 등 다른 서비스와 상호작용한다. 시스템끼리 서로 상호작용하는 이러한 환경은 애.. 2025. 7. 9.
[Spring Boot] 환경변수 설정 - application.yml (Profile) 소프트웨어 개발에서는 다양한 환경(개발, 테스트, 운영 등)에 따라 설정값을 유연하게 변경할 필요가 있다.스프링은 이러한 요구사항을 효과적으로 해결하기 위해 프로파일 기능을 제공하여 환경변수를 손쉽게 관리할 수 있게 하는데, 이는 스프링의 주요 강점 중 하나로 개발자가 코드 변경 없이 애플리케이션의 동작 방식을 환경에 맞게 조정할 수 있게 해 준다. 이 글에서는 환경변수의 기본 개념을 살펴보고, 스프링 프레임워크에서 이를 어떻게 효율적으로 관리할 수 있는지 알아보도록 한다. 환경변수란?위키백과에 등록된 환경변수(environment variable)의 사전적 정의는 '프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임'이다. 쉽게 말하여 애플리케이션이 정상적으로 동작하기 위해 사용.. 2025. 5. 11.
[Spring Framework] intellij에서 Spring legacy project 구성하기 STS 와 달리 Intellij에는 Spring legacy 프로젝트를 직접적으로 생성할 수 있는 템플릿이 존재하지 않는다. 이러한 이유로 Spring framework를 사용하기 위해 Maven의 Web application 구조에 맞추어 프로젝트를 구성해야 하지만,  Intellij Ulitimate 라이선스에서 제공하는 Maven Archetype를 활용해 Spring Legacy 프로젝트를  좀 더 쉽게 구성할 수 있다.    1. Maven 프로젝트 생성     위 이미지 처럼 Maven Archetype을 Generators로 선택한 후 원하는 project 정보를 입력한다.Catalog를 Maven Central로 변경한 뒤 maven 프로젝트를 위한 Archetype을 받아올 수 있도록 설.. 2024. 9. 7.
[multipart/form-data] - MultipartFile과 JSON 함께 받기 (HttpMediaTypeNotSupportedException가 발생하는 이유) 이슈발생 Content-Type을 'multipart/form-data'로 설정한 HTTP 요청의 응답으로 415 Unsupported Media Type (HttpMediaTypeNotSupportedException)이 발생하였다. '파일'과 '복잡한 정보'를 함께 받아야하는 상황이었어서 "복잡한 정보를 JSON 구조로 파일과 함께 보내면 되지 않을까?"란 단순한 생각으로 한 메서드 설계가 원인이었다. 물론 파일과 정보파라미터들을 일반적인 form 형태로 전달해도 되겠지만 file과 JSON을 동시에 받을 수 없을까?란 의문을 해결하고자 한다. 따라서 스프링 MVC에서 Http Message를 어떻게 처리하는지 간단하게 살펴보고 과연 file과 json 데이터를 동시에 받는 작업은 정말 불가능한 일인.. 2023. 11. 4.
[Spring Security] session 동시 접속자 수 제한 Spring Security 스프링시큐리티는 스프링 기반 웹 어플리케이션에서 '보안'(security)구현을 위한 구조를 제공해주는 프레임워크이며 인증(Authentication)과 인가(Authorization)을 포함한 다양한 기능을 제공한다. 공개되지 않은 어플리케이션 정보에 접근하고자 하는 사용자는 인증이 필요하다. 웹어플리케이션에서 인증된 사용자의 정보는 세션(Session)이나 , JWT(JSON Web token)을 통해 관리할 수 있으며 스프링 시큐리티에서는 이와 관련한 여러 인터페이스를 지원한다. 개발중인 웹 어플리케이션에서 인증 / 인가 기능을 구현하기 위해 스프링 시큐리티를 사용하였는데 로그아웃 후 재 로그인을 하였을 때 로그인이 안되는 현상이 발생하여 스프링 시큐리티 설정하는 방법을.. 2023. 4. 16.
[환경 설정] 데이터 베이스 (DB) (H2) 1. 스프링 부트의 환경설정 Spring Boot에서는 외부 설정파일(application.properties 또는 application.yml)을 사용하여 Application에 필요한 환경정보를 설정할 수 있다. 2. 데이터 베이스 설정 DB 연결 정보는 아래와 같이 설정한다. spring: datasource: url: jdbc:h2:tcp://localhost/D:/h2/anywhere username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create-drop ... reference - https://spring.io/guides/gs/accessing-data-mysql/ 2-1. H2 사용하기 Jav.. 2023. 1. 29.