IT개발/Spring Boot316 [Spring Boot3] 백엔드 테스트하기 스프링 부트에서의 테스트 스프링 부트는 애플리케이션 개발뿐 아니라 테스트 환경도 매우 쉽게 구성할 수 있도록 지원합니다. spring-boot-starter-test 하나만으로 단위 테스트부터 통합 테스트, REST API 테스트까지 모두 커버할 수 있습니다. ▸ 스프링 부트 테스트 스타터(spring-boot-starter-test) - 스프링 부트 테스트 스타터는 JUint, Mockito, AssertJ 등과 같은 테스트에 유용한 여러 라이브러리를 제공.testImplementation 'org.springframework.boot:spring-boot-starter-test' JUnit 5 : 단위 테스트, 통합 테스트 지원Mockito : Mock 객체를 이용한 모의 테스트AssertJ : .. 2025. 4. 21. [Spring Boot3] Logger & SLF4J 구현체 로그 애플리케이션의 흐름을 모니터링하고 오류를 찾는데 도움을 주는 애플리케이션 실행과 관련한 기록. "spring-boot-starter 패키지"에는 "로그백" 패키지가 포함되어 있습니다.로그백은 "SLF4J"를 기본 인터페이스로 사용합니다.애플리케이션에서 로그를 처리할 때에는 "loggerFactory"로부터 "Logger"을 취득한 후(getLooger()), 취득한 Logger를 사용하여 로그를 처리합니다.import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class Hello { private static final Logger logger = LoggerFactory.getLogger(Hello.class); public s.. 2025. 4. 20. [Spring Boot3]Spring Data JPA가 CRUD를 자동 처리하는 방법 최종 정리 (한 줄 요약!) 1. CrudRepository 제너릭 인터페이스 제공 2. UserRepository extends CrudRepository 형태로 실 매개 타입 전달 3. Spring이 UserRepository의 구현체를 자동 생성 4. 개발자는 UserRepository를 상속받은 인터페이스만 정의하면 CRUD 기능 사용 가능 5. Spring Data JPA가 인터페이스를 기반으로 자동으로 CRUD 쿼리를 실행결론: "인터페이스만 만들면 Spring이 알아서 CRUD를 다 해준다" Spring Data JPA의 CRUD 자동 처리 과정[CrudRepository 제너릭 인터페이스]Spring Data JPA는 CrudRepository라는 제너릭 인터페이스를 제공함.여기서 T는 엔.. 2025. 4. 14. [Spring Boot3]JPA의 기본 어노테이션 @EntityJPA 엔티티 클래스 선언@Table테이블 이름 및 제약 조건 설정@Id기본 키(PK) 지정@GeneratedValuePK 자동 생성 전략 설정@Column컬럼 속성 설정@EnumeratedEnum 타입 매핑@Temporal날짜/시간 타입 매핑@Lob대용량 데이터 저장 (CLOB/BLOB)@Transient영속성 제외 (DB 저장 X)1. @Entity - 엔티티 클래스 선언개념DB 테이블과 매핑되는 클래스를 나타냄JPA에서 관리하는 영속성(Persistence) 객체로 인식사용법 import jakarta.persistence.*;@Entity //JPA 엔티티 선언@Table(name = "users") //테이블명 지정 (생략 가능)public class User { @Id .. 2025. 4. 6. [Spring Boot3] 의존성 주입(Dependency Injection) 이해하기(이걸로 끝) 의존성 주입은 다른 객체에 의존하는 객체를 만들 수 있는 소프트웨어 개발 기법.(클래스 간에 "상호작용"을 하면서 동시에 독립적으로 유지) 의존성 주입에는 3가지 클래스 유형(Service, Injector, Client)Public class Car { private Owner owner; public Car() { owner = new Owner(); }}위에 예시를 보면 클라이언트 객체가 서비스 객체를 직접 생성하므로 의존성 주입은 없음.public class Car { private Owner owner; public Car(Owner owner){ this.owner = owner; } } 위에 예시를 보면 .. 2025. 3. 20. [Spring Boot3] JSP를 사용하지 않는 이유 & JPA, JSON 개념(간단) 핵심JSP를 사용하지 않는 이유 :기존에는 서버 사이드 렌더링으로 HTML을 동적으로 불러왔다면 JSP는 프론트엔드(React, Vue)가 화면을 담당하고, 백엔드는 JSON 데이터를 제공을 하여 서버 부담도 덜고, 유연한 개발이 가능.JPA : Java Persistence API로 DB와 객체(Entity Class)를 자동으로 매핑해주는 기술.JSON : 데이터를 교환하기 위한 키-값 형태의 텍스트 파일. JSP를 사용 안하는 이유(Java Server Page)기존의 Spring MVC는 JSP(서버 사이드 렌더링, 뷰)를 사용하여 서버에서 HTML을 동적으로 생성하였지만, Spring Boot에서는 JSP를 거의 사용하지 않고 JSON으로 데이터를 프론트에게 전달하여 React, Vue, An.. 2025. 3. 20. [Spring Boot] 개발 환경 설정부터 H2 데이터베이스 웹 연결 목차개발 환경 설정Spring Boot 프로젝트 생성H2 데이터베이스 설정엔터티(Entity)H2 웹 테스트1. 개발 환경 설정필수 소프트웨어JDK 17 이상 : Spring Boot 3.x는 최소 JDK 17을 요구함.IDE : Eclipse 추천Maven: 프로젝트 빌드 도구JDK 설치 가이드, 환경설정 필수 Download the Latest Java LTS FreeSubscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.www.oracle.com2. Spring Boot 프로젝트 생성Spring Initializr를 사용하여 간단히 프로젝트를 생성할 .. 2024. 11. 28. [Spring Boot3]@RestController, @JsonIgnore, @RequestBody 정의 및 예시 1. @RestController정의@RestController는 Spring Framework에서 컨트롤러 클래스를 정의할 때 사용하는 어노테이션입니다.HTTP 요청(GET, POST 등)에 대한 응답을 처리하고, 그 결과를 JSON 형식으로 반환합니다.특징@Controller + @ResponseBody의 결합된 역할을 합니다.@Controller: 요청 처리 메서드를 정의.@ResponseBody: 메서드의 반환값을 JSON 또는 XML과 같은 HTTP 응답 본문으로 변환.사용 예제import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;@Re.. 2024. 11. 25. [Spring Boot3]로그인과 쿠키, 세션, 인터셉터 로그인(Login)로그인은 웹 클라이언트를 통해 사용자와 애플리케이션의 연결을 시작하는 과정입니다. 이를 통해 사용자는 최초 연결 시 ID와 비밀번호를 입력하여 애플리케이션과 연결되고, 이후에는 "쿠키"와 "세션"을 사용하여 계속 연결 상태를 유지합니다.최초 연결 : "사용자 ID"와 "비밀번호"로 애플리케이션과 연결계속 연결 : "쿠키"와세션"을 사용하여 매번 로그인하지 않고도 연결 상태 유지인터셉터(Interceptor)인터셉터는 스프링 MVC에서 "DispatcherServlet"과 "컨트롤러" 사이에서 동작하는 모듈입니다. 서블릿 필터와는 다르게 "인터셉터"는 요청과 응답을 가로채는 역할을 하며, 애플리케이션의 목적에 맞게 사용해야 합니다.역할 : 요청/응답을 가로채어 로깅, 인증, 권한 처리 등.. 2024. 11. 24. [Spring5] 커맨드 객체 검증(Validate(), @Valid, Bean Validation) 웹 애플리케이션에서 사용자 입력을 받을 때, 올바른 데이터인지 확인하는 "검증(validation)"은 매우 중요합니다. Spring에서는 커맨드 객체(command object)를 활용해 검증 로직을 쉽게 작성할 수 있습니다. 1. 컨트롤러에서 커맨드 객체 검증 (Validate() 메서드 사용)커맨드 객체란 사용자가 폼에 입력한 데이터를 매핑하는 객체입니다. Spring에서는 Validator 인터페이스를 사용해 검증 로직을 명시적으로 작성할 수 있습니다.주요 메서드rejectValue(field, errorCode): 특정 필드에 오류 추가.reject(errorCode): 객체 전체에 오류 추가.예시 코드// 1. Validator 구현public class UserValidator impleme.. 2024. 11. 24. [Spring & MVC] MVC의 이해 MVC는 Model-View-Controller의 약자로, 소프트웨어 개발에서 사용되는 아키텍처 패턴입니다. 이 패턴은 애플리케이션을 세 가지 주요 구성 요소로 나누어, 각기 다른 역할을 담당하게 하여 코드의 유지보수성과 재사용성을 높입니다. 스프링에서는 이 패턴을 매우 효과적으로 활용하여 웹 애플리케이션의 구조를 명확하게 분리합니다.1. Model (모델)정의: 애플리케이션의 데이터나 비즈니스 로직을 담당하는 부분입니다. 데이터베이스와 상호작용하거나, 데이터를 처리하는 등의 로직을 포함합니다.역할: 사용자가 요청한 데이터를 관리하고, 이 데이터를 가공하여 반환합니다.사용처: DAO, Repository, Service 계층이 주로 이 역할을 수행하며, 데이터베이스의 데이터를 CRUD(생성, 조회, 업데.. 2024. 11. 18. [Spring5]HTTP 상태 500 – UnsatisfiedDependencyException (메시지 서블릿 [dispatcher]을(를) 위한 Servlet.init() 호출이 예외를 발생) Spring에서 트랜잭션을 적용한 비밀번호 변경 서비스 오류 해결 사례 예외 발생 메시지 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'controllerConfig': Unsatisfied dependency expressed through field 'changePasswordService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'changePwdSvc': Unsatisfied dependency expr.. 2024. 11. 18. 이전 1 2 다음