Java/Spring(20)
-
Spring boot 3.1
Spring Boot 3.1은 개발 및 테스트 환경의 자동화와 편의성에 초점을 맞춘 릴리스입니다.Docker Compose 지원(개발환경)docker-compose.yml파일을 프로젝트 루트에 두면, 개발 환경에서 Spring Boot 애플리케이션을 실행할 때 Docker Compose가 자동으로 실행됩니다. 이로 인해 개발자가 로컬에서 DB나 Redis 같은 외부 서비스를 수동으로 설치하고 실행할 필요 없이, docker-compose up과 동일한 효과를 애플리케이션 실행만으로 얻을 수 있습니다.Testcontainers 지원 강화통합 테스트시 Testcontainers 사용이 훨씬 간편해졌습니다. @ServiceConnection 어노테이션을 통해 지금까지 수동으로 작성해주었던 연결 정보 코드들을 ..
2025.07.22 -
Spring Boot 3.0 변경점
Java 지원 버전 변화Spring Boot 3.0부터는 Java 17버전 이상만 지원합니다.Java EE -> JakartaEE로 대체GraalVM기반의 Spring Native 공식 지원AOT 컴파일 지원: 기존의 JIT Compiler는 런타임에 바이트코드를 기계어로 변환하지만 AOT 컴파일로 빌드 타임에 정적 컴파일링어플리케이션 시작 시간과 메모리 사용량 감소OS에 맞는 기계어를 빌드타임에 컴파일하기 때문에 독립 실행 파일로 배포/실행 가능(JVM 불필요)'/api/hello'와 '/api/hello/'가 이제 불일치로깅 Datetime의 Default format 변경Logback 및 Log4j2의 default 로그 DatetimeFormatdl ISO-8601 표준에 맞게 변경됩니다.yyyy..
2025.07.17 -
@Async 사용법
@Async 사용법 @EnableAsync @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } @Service public class MessageService { @Async public void print(String message) { System.out.println(message); } } @RequiredArgsConstructor @RestController public class MessageController { private final MessageService messa..
2023.07.31 -
Spring Security - Rest API에 csrf protection을 사용하지 않는 이유
CSRF란 CSRF 링크 Rest API 에서 csrf를 disable하는 이유 CSRF의 취약점은 공격자가 사용자가 의도하지 않는 요청을 수행하게 하는 취약점입니다. 즉 공격자는 사용자가 가지고 있는 권한 범위 내에서 악의적인 행위를 할 수 있습니다. 일반적으로 해당 권한은 쿠키와 세션을 이용해서 인증을 하고 있기 때문에 발생하는 일입니다. 하지만 Rest API를 이용한 서버라면, session 기반 인증과는 다르게 stateless하기 때문에 서버에 인증 정보를 보관하지 않습니다. 일반적으로 jwt 같은 토큰을 사용하여 인증하기 때문에 해당 토큰을 Cookie에 저장하지 않는다면 csrf 취약점에 대해서는 어느 정도 안전하다고 말할 수 있습니다.
2022.05.02 -
Spring MVC
Spring MVC란 Spring MVC란 Front Controller Pattern에 기초한 웹 MVC 프레임워크입니다. Spring MVC는 Model, View, Controller를 명확한 클래스로 분할하고 losse coupling 시켜놓아서 매우 유연하고 확장성이 좋게 만들어 놓았습니다. Spring MVC의 구성요소 DispatcherServlet Spring MVC가 Front Controller Pattern에 기반하고 있는데 바로 그 Front Controller가 DispatcherServlet입니다. DispatcherServlet은 클라이언트의 모든 요청을 접수합니다. 그리고 받아들인 요청에 대한 처리를 다른 컴포넌트들에게 보내서 위임하고 있습니다. Infrastructure C..
2021.11.02 -
Spring MVC와 WebFlux의 차이
Spring WebFlux Spirng WebFlux는 Event driven 방식이고 비동기 논블로킹 방식입니다. WebFlux는 Node.js처럼 이벤트 루프가 돌아서 요청이 발생할 경우 그것에 맞는 핸들러에게 처리를 위임하고 처리가 완료되면 callback 메소드 등을 통해 응답을 반환합니다. 그래서 이 방식의 경우 Spirng MVC에 비해 적은 스레드로 많은 사용자의 요청을 받아낼 수 있습니다. Spirng MVC Spring Mvc는 사용자의 요청이 들어왔을 때마다 Thread를 생성하여 요청을 처리합니다. 하지만 다수의 사용자 요청이 들어왔을 때, Thread를 계속 생성하는 것은 리소스가 굉장히 많이 들어갑니다. 그래서 Spring MVC의 경우 어플리케이션이 실행되면서 Thread Poo..
2021.10.29