[Q] SecurityConfig 이해하기
·
SPRING
Spring Security를 공부를 진행하면서 내가 작성한 Config 파일이 어떻게 동작하고 어떤 의미를 지니는지 궁금해서SecurityConfig 파일을 이해하기 위한 글을 작성했습니다. 우선 제가 프로젝트를 진행하면서 작성한 SecurityConfig.java 입니다.package com.mysite.todoapp;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.security.authentication.AuthenticationManager;import org.springframework.securi..
[Q] Optional이란? 언제쓰고 어떻게 쓰는 것일까?
·
SPRING
Optional이란? 언제쓰고 어떻게 쓰는 것일까?Java에서 null 참조는 흔한 버그의 원인이며, 이를 방지하기 위해 Optional 클래스가 Java 8에 도입되었습니다. Optional은 “값이 있거나 없을 수 있다”는 의도를 명시적으로 표현해 주며, null 체크를 깜빡했을 때 발생하는 NullPointerException(NPE) 를 예방합니다. 이 글에서는 Optional의 개념부터 생성 방법, 주요 API, 실제 활용 예시, 그리고 주의사항과 사례까지 살펴보겠습니다. 왜 Optional이 필요한가?null의 문제1) NullPointerExceptionString name = user.getName(); // user가 null이면 NPE 발생! 2) 수많은 null 검사if (user !..
[Q] 로그인 인증 전략에 대해서: 쿠키, 세션, Spring Security
·
SPRING
쿠키, 세션, Spring Security를 활용한 로그인 인증 전략은 각각 어떤 장단점이 있을까?  웹 애플리케이션에서 로그인과 인증은 보안의 핵심 요소입니다.로그인 구현 방법에는 여러 가지가 있는데, 대표적으로 쿠키 기반 인증, 세션 기반 인증, 그리고 스프링 시큐리티를 활용한 방법이 있습니다.이 글에서는 각 방법의 기본 개념, 장단점, 그리고 스프링 시큐리티가 어떻게 동작하는지 알아보겠습니다. 쿠키 기반 인증쿠키(Cookie)는 클라이언트(웹 브라우저)에 저장되는 작은 데이터 조각입니다.서버는 응답 헤더에 쿠키를 설정하여 클라이언트에게 전달하며, 이후 클라이언트는 요청 시 이 쿠키를 함께 전송합니다.1) 장점경량성: 서버의 저장 공간을 사용하지 않고 클라이언트에 데이터를 저장하므로 서버 부담이 적습..
[Q] BindingResult를 사용하는 이유는?
·
SPRING
BindingResult를 사용하는 이유는?스프링 공부를 하면서 BindingResult에 대해 이러한 궁금증이 들었습니다.왜 사용하고 어떻게 사용하는지 궁금해서 이와 관련된 내용들을 공부해 보았습니다. 웹 애플리케이션에서는 사용자가 입력한 데이터를 서버에서 검증하는 것이 필수적입니다스프링 부트에서는 @Valid 어노테이션을 통해 폼 데이터의 유효성을 검사할 수 있으며, 이와 함께 BindingResult를 사용해 검증 오류를 캡슐화하고 처리할 수 있습니다.이 글에서는 @Valid와 BindingResult의 역할 및 작동 원리를 설명하고, BindingResult를 사용했을 때와 사용하지 않았을 때 발생하는 차이점을 알아보겠습니다.@Valid와 BindingResult의 기본 개념1) @Valid 어노..
[Q] 캡슐화와 정보 은닉: 왜 필드는 private, 접근자는 public이어야 할까?
·
SPRING
왜 필드는 private, 접근자는 public이어야 할까?객체지향 프로그래밍(OOP)에서 캡슐화(Encapsulation)는 중요한 원칙 중 하나입니다. 스프링 부트 프로젝트를 진행하면서 자주 접하게 되는 질문 중 하나가 "왜 클래스의 필드는 private로 선언하고, 이를 읽거나 수정할 수 있는 getter와 setter는 public으로 제공해야 할까?"입니다. 캡슐화의 개념과 그 이점을 중심으로, 필드 접근 제어에 대한 이유와 실제 예제, 그리고 이 접근 방식이 유지보수, 보안, 테스트 측면에서 왜 중요한지 공부해 보았습니다. 캡슐화와 정보 은닉의 개념캡슐화(Encapsulation)란?캡슐화는 객체 내부의 데이터(필드)와 메서드를 하나의 단위(클래스)로 묶고, 외부에서 직접 접근하지 못하도록 보..
[Q] Maven vs Gradle
·
SPRING
Maven vs Gradle  스프링 부트 애플리케이션 개발 시, 소스 코드 컴파일, 테스트, 패키징, 의존성 관리, 배포 등 여러 작업을 자동화하는 빌드 도구는 매우 중요한 역할을 합니다. 대표적인 빌드 도구인 Maven과 Gradle은 각각 다른 방식과 철학을 가지고 있으며, 프로젝트의 특성과 팀의 선호도에 따라 선택할 수 있습니다.빌드 도구란 무엇인가?빌드 도구의 역할빌드 도구는 소스 코드를 컴파일하고, 테스트를 실행하며, 최종적으로 실행 가능한 패키지(JAR, WAR 등)를 생성하는 과정을 자동화하는 소프트웨어입니다.주요 기능의존성 관리: 프로젝트에서 필요한 라이브러리나 플러그인을 자동으로 다운로드 및 업데이트합니다.빌드 스크립트 실행: 설정된 순서에 따라 컴파일, 테스트, 패키징, 배포 등의 단..
[Q] onclick, th:onclick, href, th:href 의 차이점은 무엇일까?
·
SPRING
onclick, th:onclick, href, th:href 의 차이점은 무엇일까?웹 애플리케이션을 개발을 공부하면서 뷰 페이지를 만들 때, 어떤 경우에는 onclick을 사용하고 어떤 경우에는 th:onclick을 사용합니다. href도 마찬가지입니다.특히 스프링/Thymeleaf 환경에서는 기본 HTML 속성과 Thymeleaf 전용 속성이 혼합되어 사용되는데, 이 둘의 차이를 명확히 이해하는 것이 유지보수와 확장성 측면에서 매우 중요합니다. 이번 글에서는 onclick과 href의 기본 개념은 물론, Thymeleaf를 사용할 때 제공되는 th:onclick과 th:href 속성이 어떻게 동작하는지, 그리고 언제 어떤 것을 사용해야 하는지를 알아보겠습니다.onclick – 인라인 자바스크립트 이벤..
[Q] 스프링 컨트롤러에서 뷰 파일 반환 vs Redirect: 무엇이 다를까?
·
SPRING
컨트롤러에서 뷰 파일 반환 vs. Redirect: 무엇이 다를까?스프링 MVC 애플리케이션에서는 컨트롤러 메서드가 요청을 처리한 후 최종적으로 사용자에게 보여줄 뷰를 결정하는데, 이때 두 가지 방식으로 뷰를 반환할 수 있습니다.단순 뷰 반환 (View Name 반환)리다이렉트 (Redirect) 두 방식은 사용자의 요청 처리 과정과 브라우저의 동작에 큰 차이를 가져옵니다.단순 뷰 반환 (View Name 반환)동작 원리컨트롤러에서 메서드의 반환값으로 단순한 문자열(예: "home")을 반환하면, 스프링의 뷰 리졸버(View Resolver)가 해당 이름과 매핑되는 뷰 파일(예: home.jsp, home.html 등)을 찾아 서버 내부에서 바로 렌더링합니다. 이 경우 서버가 클라이언트에게 최종 HTML..