Java Framework 33

[Spring] Bean

BeanSpring Bean은 Spring 컨테이너가 관리하는 객체입니다.여기서 관리란 객체의 생성, 의존성 주입, 그리고 생명주기를 제어하는 것을 의미합니다.* 특징객체 관리의 중앙화 : 개발자가 직접 객체를 생성할 필요 없이 Spring이 대신 생성하고 관리합니다.재사용성 : 동일한 Bean은 컨테이너 내에서 필요에 따라 재사용됩니다.유연한 의존성 관리 : 객체 간의 의존관계를 설정하고 주입하는 작업을 간소화합니다.컨테이너Spring 컨테이너는 Spring 프레임워크가 제공하는 객체 관리 도구입니다.Spring 애플리케이션이 실행되면 Spring 컨테이너가 시작되고, 이 컨테이너는 애플리케이션에서 사용할 객체(Bean)를 생성하고 관리합니다.Spring 컨테이너는 ApplicationContext 인..

[Spring Security] 스프링 세큐리티 (Spring Security)

Spring SecuritySpring Security는 웹 애플리케이션의 보안을 제공하는 Java 라이브러리입니다.주요 기능은 다음과 같습니다인증 (Authentication) : 사용자가 누구인지 확인합니다.ex. 아이디와 비밀번호를 확인해서 올바른 사용자인지 검증합니다.인가 (Authorization) : 사용자가 특정 기능을 수행할 권한이 있는지 확인합니다.ex. 관리자인지 일반 사용자인지 구분하여 접근할 수 있는 페이지를 제한합니다.CSRF 보호 : 악의적인 요청을 방지합니다.세션 관리 : 사용자의 세션을 안전하게 관리합니다.비밀번호 암호화 : 비밀번호를 안전하게 저장하기 위해 암호화합니다.주요 개념1. 인증 (Authentication)인증은 사용자가 누구인지 확인하는 과정입니다.사용자가 로그..

[Spring] 페이징 (Paiging) 주요 메서드

페이징 (Paging)페이징(Paging)은 데이터를 한 번에 모두 보여주는 대신, 여러 페이지에 나누어 보여주는 방법입니다.데이터가 많아지면 한 화면에 전부 출력하는 것은 비효율적이기 때문에 사용자가 원하는 만큼의 데이터만 나누어 보여주도록 하는 것입니다.예를 들어, 게시판에서 글이 100개가 있을 때 한 페이지에 10개씩 보여준다면 총 10개의 페이지로 나누어 표시하는 방식이 페이징입니다.페이징 객체 & 클래스 1. 스프링에서는 페이징 처리를 위해 Pageable과 Page 객체를 사용합니다.Pageable : 페이지 번호와 페이지당 데이터 개수 등의 페이징 정보를 담는 객체입니다.Pageable pageable = PageRequest.of(0, 10); // 0번째 페이지부터 10개씩 가져오기Pa..

[Spring] 바인딩 (Binding)

바인딩 (Binding)Spring Binding은 클라이언트 요청 데이터와 서버의 Java 객체 간의 자동 매핑을 제공하는 Spring MVC의 핵심 기능 중 하나입니다.HTML 폼에서 입력한 데이터를 Java 객체로 변환하거나, 반대로 Java 객체의 데이터를 HTML 폼에 표시할 때 사용됩니다.이를 통해 개발자는 데이터를 수작업으로 변환하는 번거로움을 줄이고, 간결하고 가독성 높은 코드를 작성할 수 있습니다.예를 들어, 사용자가 웹 페이지에서 폼을 작성해 제출하면, 서버는 이 데이터를 Java 객체로 변환하여 처리하게 됩니다. Spring Binding은 이 과정을 자동화합니다.동작 원리Spring Binding은 다음과 같은 과정을 통해 데이터를 Java 객체와 연결합니다.클라이언트 요청 수신사용..

[Spring] Validation Library 데이터 유효성 검사

Validation LibrarySpring Validation은 Spring 프레임워크(Spring Framework)에서 제공하는 기능으로, 클라이언트가 입력한 데이터가 정해진 조건을 만족하는지 확인하고, 애플리케이션의 비즈니스 로직이 잘못된 데이터로 인해 문제가 발생하지 않도록 보장합니다.Spring Validation은 Java Bean Validation 표준을 기반으로 하며, Hibernate Validator라는 라이브러리(Library)를 사용하여 유효성 검증을 수행합니다. 데이터 유효성 검증웹 애플리케이션은 사용자 입력 데이터를 처리하는 경우가 많습니다.예를 들어, 회원가입 페이지에서 사용자가 이름, 이메일, 비밀번호를 입력한다고 할 때이름은 빈 값일 수 없고이메일은 올바른 형식이어야 하..

[Spring] HTTP Method

HTTPHTTP 메서드는 클라이언트가 서버에 요청을 보낼 때 사용하는 방식으로, CRUD(생성, 읽기, 업데이트, 삭제) 작업과 연결됩니다.HTTP 메서드는 서버가 클라이언트로부터 "무엇을 하길 원하는지"를 이해하도록 돕는 명령어입니다.* 주요 HTTP 메서드GET : 서버에서 데이터를 조회합니다.POST : 서버에 데이터를 생성하거나 추가합니다.PUT : 서버의 데이터를 수정하거나 업데이트합니다.DELETE : 서버에서 데이터를 삭제합니다.특징명확한 역할 분담: 요청의 의도를 명확히 나타냄으로써, 서버와 클라이언트 간의 의사소통을 표준화합니다.유지보수 용이성: 의도가 명확하면 개발자들이 코드를 이해하고 수정하기 쉬워집니다.RESTful 설계의 핵심 요소: HTTP 메서드는 RESTful API 설계에서..

[Spring Boot] Thymeleaf 템플릿 상속 (Template Inheritance)

템플릿 상속 (Template Inheritance)템플릿 상속(Template Inheritance)은 웹 페이지의 공통적인 구조를 정의한 뒤, 이를 기반으로 다른 페이지들이 해당 구조를 재사용하도록 하는 기법입니다. ex. 웹사이트의 공통 구조헤더(Header) : 로고, 네비게이션 메뉴 등 상단에 항상 표시되는 영역본문(Main Content) : 페이지마다 내용이 달라지는 영역푸터(Footer) : 저작권 표시, 연락처 등 하단에 항상 표시되는 영역이 공통 구조를 매 페이지마다 반복해서 작성하면 번거롭고 비효율적입니다. 템플릿 상속은 이러한 문제를 해결하기 위해 사용됩니다.작동 방식 1. th:replaceThymeleaf에서 템플릿 상속을 구현할 때, 하위 템플릿이 공통 템플릿의 특정 부분을 교..

[Spring] @Autowired

@Autowired @Autowired는 Spring에서 의존성 주입을 간편하게 처리하기 위해 제공하는 애노테이션입니다. Spring이 관리하는 빈(bean)을 찾아서 해당 객체를 자동으로 주입합니다.빈(bean)이란?Spring IoC 컨테이너에 의해 관리되는 객체를 의미합니다.Spring은 애플리케이션 실행 시 필요한 객체들을 생성하고 관리합니다.의존성 주입 (Dependency Injection) 의존성 주입은 객체가 직접 필요한 의존성을 생성하지 않고, 외부에서 주입받는 설계 방식입니다. 객체 간의 결합도를 낮춰 코드의 재사용성과 테스트 용이성을 높입니다. 1. 전통적인 방식public class OrderService { private PaymentService paymentService;..

[Spring] @GetMapping

@GetMapping Spring Framework에서 @GetMapping은 HTTP 요청을 처리하는 데 사용되는 애노테이션입니다. 특히 HTTP GET 요청을 처리하기 위해 사용되며, RESTful 웹 서비스에서 데이터를 조회하거나 특정 작업을 호출할 때 주로 사용됩니다.@GetMapping은 Spring에서 GET 요청을 특정 메서드와 연결시키는 애노테이션입니다.클라이언트가 특정 URL로 GET 요청을 보내면, 해당 URL에 매핑된 메서드가 실행됩니다.HTTP GET 요청이란?HTTP GET은 웹 브라우저나 클라이언트가 서버에서 데이터를 가져오기 위해 사용하는 요청 방식입니다.예를 들어, 웹 브라우저 주소창에 https://annovation.tistory.com/를 입력하면, 브라우저는 해당 UR..

[Spring] @Transactional

@Transactional @Transactional은 Spring에서 트랜잭션의 시작과 종료를 자동으로 관리해주는 애노테이션입니다. 이 애노테이션은 데이터의 일관성을 보장하기 위해 트랜잭션 경계를 설정하며, 작업이 실패할 경우 자동으로 롤백합니다.트랜잭션 관리를 자동화 : 개발자가 직접 트랜잭션을 열고 닫는 코드를 작성할 필요 없음데이터 일관성 보장 : 작업 중 하나라도 실패하면 데이터베이스에 반영되지 않도록 롤백 처리동시성 문제 방지 : 여러 사용자가 동시에 데이터를 처리할 때 일관성을 유지DB 세션 데이터베이스(DB) 세션(Session)은 애플리케이션과 데이터베이스 간의 연결 상태를 말합니다. 이 세션이 끊어지는 경우 @Transactional를 통해 해결할 수 있습니다. 1. Lazy Loadi..