Back-End/Spring (16) 썸네일형 리스트형 Spring Valid Spring @Valid는 Spring FrameWork에서 유효성 검사를 간단하고 효율저으로 처리할 수 있도록 지원하는 도구이다.주로 데이터 검증에 사용되며, 클라이언트에서 받은 요청 데이터가 올바른지 확인하는데 활용.@Valid란?유효성 검사를 수행하기 위해 Bean Validation API를 사용하는 애노테이션.DTO 객체의 필드에 제약 조건을 설정하여 입력값의 유효성을 확인한다.Spring MVC와 함께 사용할 때, 컨트롤러에서 자동으로 요청 본문 데이터를 DTO에 매핑하면서 검증한다.기본 사용법DTO 클래스에서 유효성 제약 조건 추가import jakarta.validation.constraints.NotNull;import jakarta.validation.constraints.Size;im.. Spring Bean 등록 @ComponentScanSpring이 특정 패키지 내에서 @Component, @Service, @Repository, @Controller 같은 애노테이션이 붙은 클래스를 자동으로 검색하고, 이를 Bean으로 등록하는 기능이다. 개발자가 Bean을 직접 등록하지 않고도 Spring이 자동으로 관리할 객체를 찾는다.ComponentScan의 범위 basePackages : 특정 패키지를 스캔할 때 사용, 배열로 여러 개를 선언ex) @ComponentScan(basePackages = {"com.example", "com.another"})basePakageClasses : 특정 클래스가 속한 패키지를 기준으로 스캔할 수 있다.ex) @ComponentScan(basePackageClasses = My.. IOC / DI IOC(제어의 역전, Inversion Of Control)객체의 생성과 관리 권한을 개발자가 아닌 Spring 컨테이너가 담당하는 것을 말한다. 기본적으로 개발자가 객체를 직접 생성하고 관리했지만, Spring에서는 컨테이너가 객체 생성, 주입, 소멸을 관리한다.DI(의존성 주입, Dependency Injection)Spring이 객체 간의 의존성을 자동으로 주입해주는 것을 의미. 한 객체가 다른 객체를 사용할 때, 해당 객체를 직접 생성하지 않고 Spring이 주입해주는 방식이다. IOC를 구현하는 방식 중 하나이다.예시) IOC / DI//개발자가 직접 관리// Service 인터페이스public interface MyService { void doSomething();}// Reposito.. Spring Container와 Spring Bean SpringContainer Spring으로 구성된 애플리케이션에서 객체(Bean)를 생성, 관리, 소멸하는 역할을 담당. 애플리케이션 시작 시, 설정 파일이나 Annotation을 읽어 Bean을 생성하고 주입하는 모든 과정을 컨트롤 한다.Java의 객체 생성Java의 객체 생성은 new 키워드를 통해 직접 인스턴스를 생성하는 방식이다. 예를 들어, 클래스 A에서 클래스 B의 기능을 사용하려면, A에서 new B()를 통해 B 객체를 직접 생성한다.이 방식은 객체 간 결합도가 높아지고, 객체의 생성 및 관리 책임이 A 클래스에 부여된다.SpringContainer의 역할객체(Bean)를 생성 및 관리하고 의존성을 주입하는 역할을 담당한다.예를 들어, A클래스에서 B 클래스의 기능을 쓰고 싶으면 A 클래.. 객체 지향 설계(SOLID 원칙) 단일 책임 원칙 SRP(Single Resonsibility Priciple)하나의 클래스는 하나의 책임만 가져야 한다.클래스는 한 가지 기능에 집중해야 하며, 그 외의 기능을 담당하지 않아야 한다.예시User 클래스는 사용자 정보 관리, 로그인 및 데이터베이스 저장 책임을 동시에 가지고 있음//잘못된 예시public class User { private String name; // 사용자 정보 public void login() { // 로그인 기능 } public void saveUser() { // 데이터베이스 저장 기능 }}// SRP 적용public class User { // 사용자 정보 관리 }public class AuthService { public void logi.. Spring DI(의존성 주입)에 대해서 우리는 Java에서 기본적으로 객체를 사용할 때는 Main 클래스의 main() 메서드 안에서 new로 객체를 생성하고, 필요한 객체를 직접 전달하는 방식으로 의존성을 주입을 처리했다.하지만! Spring에서는 개발자가 객체를 new로 생성하지 않아도, 스프링 컨테이너(Application Context)가 알아서 객체(Bean)을 생성하고, 필요한 곳에 자동으로 주입해준다.먼저 Java 방식을 살펴보고 Spring 방식으로 넘어가보자!Java 방식 : 직접 객체 생성Java 방식에서는 필요한 모든 객체를 직접 생성하고 직접 전달해야 했다.public class Main { public static void main(String[] args) { // 객체 생성 및 의존성 주입 .. Spring Annotation 스프링 컴포넌트 관련 @Component스프링이 관리할 객체(Bean)라는 표시개발자가 객체를 직접 생성하지 않아도, 스프링 컨테이너가 자동으로 생성하고 관리해 준다.확장된 @Component 애노테이션들애노테이션역할@Controller웹 요청 처리(HTML View 반환)@RestControllerREST API 요청 처리(JSON 데이터 반환)@Service비지니스 로직을 처리@RepositoryDB 접근 로직 처리@Configuration설정 관련 클래스2. 애노테이션의 작동 방식을 이해하는 메타 애노테이션@Target애노테이션을 적용할 위치를 제한한다.TYPE : 클래스 / 인터페이스 / 열거형에 적용METHOD : 메서드에 적용FIELD : 필드에 적용@Target(ElementType.MET.. 스프링으로 넘어 가기 전에.. 1. 클래스와 객체, 참조 개념public class Car { private String brand; public Car(String brand){ this.brand = brand; } public String getBrand(){ return brand; }}public class CarOwner { private Car car; public CarOwner(Car car) { this.car = car; } public void displayCarInfo() { System.out.println("I Own a " + car.brand(); } public static void main(Strin.. 이전 1 2 다음