Spring에서의 인스턴스 생성 비교: new 키워드 대 DI
·
Spring 기초/Spring 기초 지식
Spring과 자바의 2가지 인스턴스 생성방법의 차이를 알아보자 내가 완전 1개월 차 주니어 시절 스프링을 통해 개발을 하던 도중 컨트롤러 메서드를 작성할 일이 생겼는데 이때 메서드의 매게 변수로 객체를 받는 것과 메서드 내부에서 new를 통해 객체를 생성해서 사용하는 것에 대한 궁금증이 생겼다. 10년 이상된 프로젝트였는데 어떤 객체는 new를 통해 생성하였으며 어떤 객체는 Map이나 List를 통해 파라미터로 받아서 사용하고 있었다. 어떤 방식이 더 좋은 방법인지 간단하게 알아보도록 하자 1. Spring에서의 DI (Dependency Injection) 이해 1-1. Spring에서의 DI(Dependency Injection) 이해하기 Spring Framework에서 DI(Dependency ..
스프링에서의 데이터베이스 접근 방법: DAO, Mapper, 그리고 @Mapper 어노테이션 사용법
·
Spring 기초/Spring 기초 지식
스프링, 스프링부트에선 DB에 어떻게 접근하는지 알아보자 스프링 프레임워크와 스프링 부트는 데이터베이스 접근을 위해 매우 유연하고 효율적인 방법을 제공한다. 이번 포스트에서는 스프링에서 데이터베이스에 접근하는 다양한 방법을 탐구해 본다. 우선, 데이터 접근을 위한 기본 구조인 DAO(Data Access Object)에 대해 알아보고, ORM(Object-Relational Mapping)을 위한 Mapper의 사용과 그 특징을 살펴볼 것이다. 또한, MyBatis와 같은 SQL 매핑 도구를 사용할 때 유용한 @Mapper 어노테이션의 중요성과 사용시 주의점에 대해서도 다룰 예정이다. 이를 통해 스프링을 사용한 데이터베이스 접근 방식의 깊이와 유연성을 이해할 수 있을 것이다. 1. DAO란 무엇인가? 1..
스프링에서 데이터 전달의 핵심: VO와 DTO의 이해 및 활용
·
Spring 기초/Spring 기초 지식
스프링에서 Data를 전달하는 객체에는 VO, DTO가 있는데 이게 어떤것인지 알아보자 VO (Value Object)와 DTO (Data Transfer Object)는 모두 Java 및 Spring과 같은 객체 지향 프로그래밍 및 프레임워크에서 데이터를 표현하고 전달하는 데 사용되는 설계 패턴이다. 1. VO, DTO의 차이점 (불변성) 1-1. VO(Value Object)의 불변성 VO는 '불변 객체'다. 한 번 생성되면, 그 상태를 바꿀 수 없다. 작고, 속성이 정해진 객체로, 생성 시에 모든 속성이 설정되고, 이후에는 바뀌지 않는다. 불변성은 VO의 중요한 특징이다. 이건 프로그램의 복잡성을 줄여주고 안정성을 높여준다. 1-2. DTO(Data Transfer Object)의 불변성 DTO는 ..
Spring 환경설정: Xml과 @Configuration의 차이점
·
Spring 기초/Spring 설정
이번 포스팅에서는 스프링에서 환경설정을 위해 사용하는 xml작성방식과 @Configuration 방식에 대해 알아보자 1. Xml을 사용한 Spring 환경설정 xml을 사용한 환경설정 Spring Framework는 SpringBoot가 나오기 이전부터 사용되어 온 대표적인 Java 기반의 엔터프라이즈 애플리케이션 개발 프레임워크이다. 전통적인 Spring Framework에서는 설정을 위해 XML 파일을 주로 사용했다. 이 XML 파일에는 Bean의 정의, 의존성 정보, 각종 설정 등이 포함되어 있었다. 작성예시 위의 예시에서 beans 태그는 루트 엘리먼트이고 내부의 bean 태그는 Spring에서 관리하는 객체인 빈(bean)을 정의하는 것이다. bean 태그 안의 id는 빈의 식별자이며, cla..
Spring Boot 폼 데이터 바인딩: @ModelAttribute 활용법
·
Spring 기초/Spring 기초 지식
이번 포스트에서는 @ModelAttribute를 활용한 데이터 바인딩 방식에 대해 알아보자 1. modelAttribute 방식으로 폼을 작성하고 전송하는 장점 데이터 바인딩의 용이성: modelAttribute 속성을 사용하여 폼 데이터를 모델 객체에 자동으로 바인딩할 수 있다. 이를 통해 컨트롤러에서 해당 모델 객체를 매개변수로 받아 데이터를 쉽게 처리할 수 있다. form 필드의 이름과 model 객체의 필드 이름이 일치하면 자동으로 데이터가 매핑되어 컨트롤러에서 별도의 데이터 추출 및 변환 과정 없이 데이터를 사용할 수 있다. 유효성 검증의 편의성: Spring MVC는 @Valid 어노테이션을 통해 데이터의 유효성을 검증할 수 있다. modelAttribute 방식을 사용하면 모델 객체에 @Va..
Spring Boot 웹 개발: JSP와 JSTL 활용하기 (3편)
·
Spring 기초/Spring 기초 지식2
이번 포스트에서는 spring과 Jsp 그리고 Jstl을 함께 사용하여 개발하는 방법을 소개한다. 1. Spring + JSP + JSTL 을 사용하여 코드작성하는 방법 JSP 파일 내에 직접 자바 코드를 작성하는 방식은 과거에 많이 사용되었지만, 최근에는 추천되지 않는 방식이 되었다. 대신, 서비스 로직은 서블릿이나 스프링 컨트롤러와 같은 다른 서버 사이드 컴포넌트에서 처리하고, JSP 파일은 주로 뷰(View)의 역할을 담당하는 것이 일반적이다. 서비스 로직에서 필요한 데이터를 처리한 후, 해당 데이터를 컨트롤러를 통해 JSP로 전달하는 방식을 주로 사용한다. 컨트롤러는 데이터를 Model 객체에 담아서 JSP로 전달하고, JSP는 JSTL(JavaServer Pages Standard Tag Lib..
Spring Boot 서블릿 연동: Spring과 서블릿의 관계 (2편)
·
Spring 기초/Spring 기초 지식2
이번 포스트에서는 Spring과 Servlet의 관계에 대해서 주로 설명한다. 1. Spring과 서블릿의 관계 1-1. 예시: 회원 가입 기능 개발 서블릿으로 개발한 경우 요리사의 직접 요리: 요리사(서블릿)가 직접 주문(회원 가입 요청)을 받고, 재료(데이터)를 준비하고, 요리(회원 저장)를 하고, 손님에게 음식(응답)을 전달한다. 단계: 주문을 받는다. 재료를 준비한다. 요리를 한다. 음식을 전달한다. Spring MVC로 개발한 경우 요리사와 웨이터의 협업: 요리사(컨트롤러)는 요리만 전문적으로 하고, 웨이터(디스패처 서블릿)가 주문을 받고 음식을 전달한다. 단계: 웨이터가 주문을 받는다. 요리사가 재료를 준비한다. 요리사가 요리를 한다. 웨이터가 음식을 전달한다. 위의 두 방식의 비교 및 설명 ..
Spring Boot 서블릿 기초: 서블릿 이해하기 (1편)
·
Spring 기초/Spring 기초 지식2
이번 포스트에서는 Spring에서 사용되는 서블릿에 대한 기본기를 설명한다. 1. 서블릿이란 서블릿(Servlet)은 웹 서버에서 실행되는 자바 프로그램으로, 클라이언트로부터의 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 역할을 한다. 이는 주로 동적인 웹 페이지를 생성하기 위한 용도로 사용된다. 즉, 사용자가 웹 페이지를 요청할 때마다 새롭게 생성되는 콘텐츠를 만드는데 사용되는 도구 중 하나이다. 서블릿은 일반적인 자바 클래스와 마찬가지로 자바 코드로 작성된다. 하지만 일반적인 자바 프로그램과는 다르게 웹 서버 내에서 실행되며, HTTP 프로토콜을 이용하여 클라이언트와 통신한다. 이를 위해, 서블릿은 보통 HTTP 요청을 처리하는 메소드를 구현한다. 대표적인 예로는 doGet()과 doPos..