
스프링(Spring) > 스프링(Spring)이란? JAVA의 웹 프레임워크로 JAVA 언어를 기반으로 사용한다. JAVA로 다양한 어플리케이션을 만들기 위한 프로그래밍 틀이라 할 수 있다. JAVA의 활용도가 높아지면서, JAVA를 이용한 기술이 JSP, Myba


프로젝트를 만들고 공부할 때 REST API를 많이 사용하는데 왜 사용하지??장점이 뭘까??라는 생각을 많이 하게 되었다.그래서 REST API에 대해 찾아보고 정리하는 시간을 가지게 되었다.HTTP URI(Uniform Resource Identifier)를 통해 자

이전 포스트에서 JWT 토큰이 어떻게 활용될 것인지랑 쿠키에 저장할 것 인지 아니면 localStroage에 저장할 것 인지를 알아보았다. 이제 Docker에다가 Redis서버를 띄어볼려고 한다.하나의 컨테이너 안에서 Redis만 실행되는 것으로 한다. 도커(Do

인증(Authentication)보호된 리소스에 접근하는 대상,즉 사용자에게 적절한 접근 권한이 있는지 확인하는 일련의 과정(해당 사용자가 본인이 맞는지 확인)인가(Authorization)인증절차가 끝난 접근 주체(Principal)가 보호된 리소스에 접근 가능한지를

스프링에서 카카오 지도 API를 활용하는 법을 기록해 볼려고 한다.일단 https://apis.map.kakao.com/ 여기서 APP KEY 발급을 누른다.그리고 카카오 로그인을 진행 한 후에애플리케이션 추가하기를 누른다.그리고 플랫폼 -> 사이트 도메인을

혼자 스프링을 공부하다 보니 @Setter를 사용할 때도 있고 @Builder를 사용하는 경우도 있었다.나는 주로 @Setter를 사용했지만, 문득 @Builder와 @Setter의 차이점이 궁금해졌다. 기능이 비슷해 보였기 때문이다.조금 찾아보니, @Setter는 지

데이터베이스의 상태를 변화시키기 위해서 수행하는 작업의 단위데이터의 정합성을 보장하기 위해 고안된 방법이다.데이터베이스 트랜잭션은 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위여기서 유사한 시스템이란 트랜잭션이 성공과 실패가 분명하고 상호 독립적이며,

서비스에서 사용자 개인정보와 인증에 대한 책임을 지지 않고 신뢰할 만한 타사 플랫폼(카카오,네이버,구글)에 위임보안성 향상: 중요한 개인정보(비밀번호 등)를 직접 처리하지 않고, 이미 보안이 강력하게 설정된 플랫폼에 위임함으로써 보안 사고를 줄일 수 있다.사용자 편의성

.

스프링 컨테이너 최상위 인터페이스스프링 빈을 조회하는 역할 담당getBean() 제공BeanFactory를 직접 사용할 일은 거의 없다.부가기능이 포함된 ApplicationContext 사용BeanFactory나 ApplicationContext를 스프링 컨테이너라고
스프링 빈은 간단하게 다음과 같은 라이프사이클을 가진다.객체 생성 -> 의존관계 주입스프링 빈은 객체를 생성하고, 의존관계 주입이 다 끝난 다음에 필요한 데이터를 사용할 수 있는 준비가 완료된다.스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기
다른 사람들의 프로젝트를 보다가 N+1 문제 해결에 대한 내용이 많아 궁금해졌다.평소에 프로젝트를 진행하면서 쿼리가 예상보다 많이 로그에 찍히는 것을 보긴 했지만, 그때는 성능에 미치는 영향을 깊게 생각하지 않았다.하지만 이번 기회에 N+1 문제가 DB와 애플리케이션
@ElementCollection 기본적으로 JPA에서는 컬렉션(Set,List)을 한 엔티티에 직접 저장할 수 없다. -> JPA는 엔티티와 엔티티 간의 관계를 저장하는 방식이 기본이라, 일반적인 컬렉션(Set,List)을 그대로 DB에 저장할 수 없다. 그래서@
인증(Authentication) 사용자의 신원을 확인하는 과정 예시) 로그인 시 아이디와 비밀번호를 입력하거나, 생체인식(지문, 얼굴 인식)을 사용하는 것 "누구인가?"를 확인 > 인가 (Authorization) 인증된 사용자가 어떤 리소스에 접근할 수 있는 권한
라이브러리 개발자가 필요할 때 호출해서 사용하는 도구 애플리케이션의 흐름을 개발자가 직접 제어하며, 특정 기능을 구현하기 위해 라이브러리를 가져다 쓰는 방식 > 프레임워크 애플리케이션의 구조와 흐름을 이미 정의하고 있으며, 개발자는 프레임워크가 제공하는 틀 안에서 코

DB 커넥션을 획득할 때는 다음과 같은 복잡한 과정을 거친다.애플리케이션 로직은 DB 드라이버를 통해 커넥션 조회DB 드라이버는 DB 와 TCP/IP 커넥션을 연결(3-way-handShaking)DB 드라이버는 TCP/IP 커넥션이 연결되면, ID,PW와 기타 부가정

스프링 부트가 제공하는 강력한 모니터링 및 관리 도구마이크로미터, 프로메테우스, 그라파나 같은 모니터링 시스템과 매우 쉽게 연동 가능의존성을 주입하면 http://localhost:8080/actuator 를 실행했을 때 이러한 정보들이 나오는 것을 확인 할

서비스를 운영할 때 애플리케이션의 CPU, 메모리, 커넥션 사용, 고객 요청수와 깉은 수 많은 지표를 확인하는 것이 매우 중요하다. 그래야 어디에 어떤 문제가 발생했는지 사전에 대처가 가능하고, 문제 파악을 쉽게 할 수있다. 예를 들어 메모리 사용량이 가득 찼다면, 메
빌더(Builder)패턴이란? 복잡한 객체의 생성 과정과 표현 방법을 분리하여 다양한 구성의 인스턴스를 만드는 생성패턴이다. 생성자에 들어갈 매개 변수를 메서드로 하나하나 받아들이고 마지막에 통합 빌드해서 객체를 생성하는 방식을 의미한다. > ❗️ 예를 들어 스타벅

이메일 전송은 외부 SMTP 서버와의 네트워크 통신, I/O 처리 등 여러 과정을 거치기 때문에 서버 자원을 많이 사용하고, 특히 동기 방식으로 처리할 경우 사용자 응답 지연 등 전체 시스템 성능에 부정적인 영향을 줄 수 있는 무거운 작업이다.단순하게 동기적으로 이메일

🔐 Spring Security > * Spring Security는 Spring 웹 애플리케이션에서 보안 기능을 제공하는 프레임워크 애플리케이션의 인증(Authentication), 인가(Authorization) 의 개념을 기반으로 웹 애플리케이션의 보안을 관

https://www.boannews.com/media/view.asp?idx=78058&page=1&kind=1 > 이처럼 비밀번호를 암호화하지 않고 그대로 저장하는 행위는 해킹이나 내부 유출 시 사용자 계정 탈취 위험을 극단적으로 높일 뿐만 아니라, 서비스 신
> 사실 Redis를 많이 사용하는데 그냥 Inmemory 기반이고 key-value로 데이터를 저장하니까 속도가 빠르지 않을까? 그니까 많이 사용하는거지 않을까? 라고 무의적으로 사용했는데 왜 Redis를 사용하는지, 사용법, 그리고 어케 적용하는지 알아야할 것

프로젝트때 빈번하게 조회되는 데이터들에게 캐시를 적용해보고 싶었다. 솔직히 많이 쓰는 캐시는 Redis겠지만 스프링에서 제공해주는 Caffeine Cache에 흥미가 생겼다. 내가 커피를 좋아하기때문에 끌린걸까? 캐시 간단하게 캐시에 대해 설명하면 좋을 것 같다.

사실 테스트 코드 작성을 진짜 못한다. 매번 그냥 뷰를 구현해놓고 테스트를 진행한 적도 많고, 어떻게 진행해야할지 아니면 어떻게 해야 내가 의도한대로 테스트를 할 수 있을지 막막했다. 따라서 간단하게 정리해볼려고 한다.단위 테스트는 하나의 모듈(또는 함수, 메서드 등)

사이드 프로젝트로 STOMP 기반 채팅 시스템을 개발했다. 먼저 메인 서버와 채팅 서버를 분리하여 구축했는데, 실제 운영 환경에서 채팅 서버를 스케일 아웃(Scale Out)해야 할 경우에도 메시지가 실시간으로 전달되는지 궁금했다. 테스트해 본 결과, 분산된 채팅
프로젝트를 진행하던 중 우연히 HTTP 요청을 보내야 할 일이 생겼다. HTTP 클라이언트로는 일반적으로 RestTemplate이나 WebClient를 많이 사용하지만, 넷플릭스에서 개발한 FeignClient에 흥미가 생겨 직접 적용해보았다. 📌 FeignClie
지금까지 달려오면서 김영한님의 스프링 강의와 프로그래머스 데브코스에서 스프링을 많이 다뤄봤고 사용해보았다. 그럼에도 불구하고 "기본이 없다면 미래를 구축할 수 없다"는 말처럼, 기본부터 다시 차근차근 복습하며 미래를 위한 기초를 탄탄히 다져보려고 한다. 자세하게는 정리

필터(Filter)는 디스패처 서블릿(Dispatcher Servlet)으로 요청이 전달되기 전 / 후에, 특정 URL 패턴에 맞는 모든 요청에 대해 부가적인 작업을 수행할 수 있는 기능을 제공한다.그림에서 볼 수 있듯이, 필터는 스프링 컨테이너의 관리 범위 밖에서 동

요즘 면접에서 “JWT 탈취 시 대처 방안?” 같은 질문을 정말 많이 받는다. 보안 이슈가 중요해지다 보니, 인증/인가 관련 질문 비중도 점점 커지는 느낌이다. 나도 처음에는 이 질문이 너무 막막해서 힘들었던 경험이 있다. 정답이 딱 정해져 있는 주제도 아니고, 상황마

오늘은 Spring AOP에 대해 정리해볼려고 한다. 프로젝트를 하다 보면 핵심 로직 말고도 로깅, 권한 체크, 예외 처리 같은 부가적인 기능을 넣어야 할 때가 많다. 그런데 이런 코드들이 여기저기 섞여버리면 나중에 관리하기가 너무 힘들어진다.그래서 “이런 공통적인 작

오늘은 그냥 가볍게 WebSocket이랑 STOMP가 뭔지 한 번 정리해보려고 한다.프로젝트 하다 보면 채팅이나 알림 같은 실시간 기능을 넣어야 할 때가 있는데, 그럴 때마다 정확히 둘의 역할이 뭐였는지 살짝 헷갈릴 때가 있더라. 그래서 이번에 한 번 제대로 정리해두면