Java 16

[Bean, Proxy] 왜 @Cacheable이 동작하지 않을까?

Spring 애플리케이션에서 @Cacheable 어노테이션을 사용해 캐싱을 적용하려고 했는데, 기대했던 대로 동작하지 않아 당황한 적이 있나요? 특히 같은 클래스 내에서 @Cacheable 메서드를 호출했을 때 캐싱이 전혀 적용되지 않는 현상을 경험했을 수 있습니다. 이 글에서는 @Cacheable이 예상대로 동작하지 않는 이유와, 이 문제를 해결하는 방법을 심도 있게 다루어 보겠습니다. Spring의 빈(Bean)과 프록시(Proxy)의 동작 원리를 이해하고, 이를 통해 캐싱이 정상적으로 작동하도록 애플리케이션을 설계하는 방법을 알아보세요. # Spring의 빈(Bean)과 각 어노테이션 Bean이란?Spring에서 **빈(Bean)**은 Spring IoC 컨테이너에 의해 관리되는 객체를 의미합니다...

Java 2024.08.21

[Redis] Redis란?

# Redis란?Redis(Remote Dictionary Server)는 오픈 소스 인메모리 데이터 구조 저장소로, 일반적으로 캐시, 메시지 브로커, 데이터베이스 등 다양한 용도로 사용됩니다. Redis는 데이터를 메모리에 저장하기 때문에 매우 빠르게 데이터에 접근할 수 있으며, 다양한 데이터 구조를 지원합니다. 이러한 특성 때문에, 실시간 데이터 처리, 세션 관리, 캐싱 등과 같은 고속 처리 요구 사항이 있는 애플리케이션에서 널리 사용됩니다. 왜 메모리에 데이터를 올리면 더 빠를까??일반적인 데이터베이스는 데이터를 디스크에 저장합니다. 디스크는 메모리에 비해 읽기/쓰기 속도가 느립니다. 반면, 메모리는 휘발성이지만 매우 빠른 접근 속도를 제공합니다. Redis는 데이터를 메모리에 저장하여 디스크 I/..

Java 2024.08.16

[String Boot] JWT 토큰 저장 HTTP-only Cookie

# HTTP Only Cookie란? 웹 브라우저가 서버와의 통신에서만 사용하도록 설정된 쿠키로, 클라이언트 측의 스크립트(Javascript 등)에서는 접근할 수 없는 쿠키를 말합니다.HTTP Only 속성이 설정된 쿠키는 서버가 설정한 경우에만 브라우저가 자동으로 서버로 전송하며, 클라이언트 측의 코드에서 읽거나 수정할 수 없는 쿠키입니다.  # HTTP Only Cookie를 사용해야 하는 이유와 단점사용이유  보안 강화: XSS 공격으로부터 보호됩니다. JavaScript로 접근할 수 없기 때문에 민감한 정보가 안전하게 저장됩니다.자동 처리: 브라우저가 자동으로 쿠키를 서버로 전송하므로, 개발자가 신경 쓸 부분이 줄어듭니다.데이터 무결성: 클라이언트 측에서 쿠키를 수정할 수 없기 때문에 데이터의 ..

Java 2024.08.09

[Spring Boot] Spring Boot란?

# Spring Boot 란?Spring Boot는 Spring Framework의 확장판으로, Spring 애플리케이션 개발을 더욱 빠르고 간편하게 만들기 위해 만들어졌습니다. Spring Boot는 설정의 복잡성을 줄이고, 빠르게 프로덕션 수준의 애플리케이션을 개발할 수 있게 해주는 도구와 기능을 제공합니다. # Spring Boot의 주요 특징 자동 설정 (Auto-Configuration): Spring Boot는 대부분의 Spring 애플리케이션에서 필요로 하는 설정을 자동으로 구성해줍니다. 개발자는 기본 설정을 신경 쓰지 않아도 되며, 필요에 따라 커스터마이징할 수 있습니다.독립 실행형(Spring Boot Applications): Spring Boot 애플리케이션은 독립적으로 실행될 수 있..

Java 2024.08.05

[Spring] Spring이란? 정리가 잘 된 책장이다

# 결론 먼저. Spring이란?Spring을 사용함으로써 우리는 더 간결하고 유지보수하기 쉬운 코드를 작성할 수 있으며, 변화하는 요구사항에 유연하게 대응할 수 있습니다.Spring Framework는 복잡한 Java 애플리케이션 개발을 단순화하고, 유지보수성과 확장성을 높이기 위해 만들어졌습니다.의존성 주입, AOP, 트랜잭션 관리, 데이터 접근 통합 등의 기능을 통해 개발자는 비즈니스 로직에 집중할 수 있으며, 복잡한 엔터프라이즈 애플리케이션을 쉽게 개발할 수 있습니다.Spring의 다양한 어노테이션(@Service, @Controller 등)은 마치 책장을 정리하듯, 코드를 명확하게 분류하고 관리할 수 있게 도와줍니다.  # 프레임워크란 무엇인가? 프레임워크는 소프트웨어 개발에서 반복적으로 사용되..

Java 2024.08.02

[Spring Boot] Optional과 orElseThrow

# Optional과 orElseThrow란? Optional은 Java 8에서 도입된 클래스 중 하나로, null을 안전하게 처리하기 위한 도구입니다. Optional 객체를 사용하면 값이 존재할 수도 있고, 존재하지 않을 수도 있는 상황을 명확하게 표현할 수 있습니다. orElseThrow는 Optional 객체에서 값을 가져올 때, 값이 없을 경우 지정한 예외를 발생시키는 메서드 # Optional과 orElseThrow를 사용하지 않았을 때 Optional과 orElseThrow를 사용하지 않으면, null 체크와 예외 처리가 별도로 필요 # 코드 비교1. 사용하지 않았을 때 // UserRepository.java package com.example.demo.repository; import c..

Java 2024.07.31