Spring Framework는 Java 애플리케이션 개발에서 핵심적인 역할을 하며, 특히 웹 애플리케이션에서는 사용자의 요청을 처리하고 적절한 응답을 반환하기 위해 다양한 애노테이션을 제공합니다. 그중 @Controller와 @RestController는 자주 혼동되는 두 가지 애노테이션입니다. @Controller@Controller는 Spring MVC에서 컨트롤러 역할을 하는 클래스에 사용되는 애노테이션입니다. 주로 뷰(View)를 반환하는 데 사용되며, HTML 페이지와 같은 템플릿 엔진과 함께 사용됩니다. @Controller 는 반환 값이 뷰 이름으로 해석됩니다. Spring 은 해당 이름을 기반으로 HTML, JSP 와 같은 뷰 파일을 렌더링 해줍니다. 또한 일반적으로 HTTP 응답 자체를..
useTransitionUI 를 차단하지 않고 상태를 업데이트 할수 있는 React Hook 을 말합니다. React19 version 에서는 비동기처리도 우선순위를 줄 수 있게 변경이 됩니다.원래 useTransition 은 수많은 state 가 존재할 경우 우선순위를 주기 위해서 탄생했습니다.예를 들어, 사용자가 검색어를 입력하면 결과를 가져오는 작업이 있는데, 결과를 가져오는 동안 앱이 멈춘 것처럼 보이는 문제를 사전에 방지해 줍니다. 쉽게 말해 긴급한 작업과 덜 긴급한 작업의 UI 가시성을 처리하고 싶을 때 사용합니다.import React, { useState } from "react";const Transition = () => { const [number, setNumber] = useSt..
Spring Boot 프로젝트에서 ResponseEntity 는 HTTP 응답을 효과적으로 제어하고 다양한 측면에서 사용자에게 정확한 응답을 제공하는 데 사용됩니다.ResponseEntityResponseEntity 는 HTTP 응답을 나타내는 Spring Framework 의 클래스입니다.이 클래스는 요청에 대한 응답의 HTTP Header , Status Code 를 포함하여 클라이언트에게 전달할 수 있는 다양한 기능을 제공합니다.사용하는 이유ResponseEntity 를 사용하면 응답에 대한 HTTP 상태 코드를 명시적으로 지정할 수 있습니다.이는 클라이언트에게 정확한 상태 정보를 제공하는 데 도움이 됩니다.또한 응답 본문과 헤더를 세밀하게 제어할 수 있습니다.ResponseEntity 에서 자주 ..
설명API 서버를 만들 때 일반적으로 클라이언트한테 JSON 형식으로 데이터를 넘겨주어야 합니다.하지만 아래처럼 JSON 데이터를 일일이 조립하면 생산성도 떨어질뿐더러 오류가 날 확률이 높습니다.String json = "{\"name\" : \"" + name + "\"}";return json; Spring에서는 @ResponseBody Annotation을 통해 객체를 직접 JSON으로 변환시켜 줄 수 있습니다.JSON 형태로 Response 를 보내는 방법에 대하여 설명하겠습니다.JSON 형태로 반환하기우선 JSON 으로 변환시킬 객체를 만들어야 합니다.여기서는 Lombok 라이브러리를 사용하였기 때문에 감안하셔서 보시는 것을 권장드립니다.package hello.core.common;import..
스프링 IoC 컨테이너스프링의 IoC 컨테이너는 Bean 객체들을 책임지고 의존성을 관리합니다.객체들을 관리한다는 것은 객체의 생성부터 소멸까지의 생명주기( LifeCycle ) 관리를 개발자가 아닌 컨테이너가 대신해준다는 말입니다. 그로 인해 개발자는 객체 관리의 주체가 프레임워크( Container ) 가 되기 때문에 로직에 집중할 수 있는 장점이 있습니다.스프링 빈의 LifeCycle스프링 컨테이너 생성 → Bean 생성 -> 의존성 주입 → 초기화 콜백 → Bean 사용 → 소멸 전 콜백 → 스프링 종료빈 생명주기 콜백의 필요성먼저 콜백에 대해 설명하면, 주로 콜백함수를 부를 때 사용되는 용어이며 콜백함수를 등록하면 특정 이벤트가 발생했을 때 해당 메소드가 호출됩니다. 즉, 조건에 따라 실행될 수..
빈이 2개 이상일 때 생기는 오류스프링에서는 같은 타입의 빈이 여러 개일 때, 어떤 빈을 사용할지 모호성이 발생합니다.예를 들어 @Autowired 는 타입으로 빈을 조회하기 때문에 interface 가 discountPolicy 인 구현체가 2개 이상이라면 오류가 발생합니다. 당연하게도 discountPolicy 로 만든 구현체가 하나여야 하는데 2개 이상이라서 어떤 구현체를 불러와야 할지 모르기 때문입니다.@Componentpublic class FixDiscountPolicy implements DiscountPolicy {}@Componentpublic class RateDiscountPolicy implements DiscountPolicy {}@Autowiredprivate final Disc..
의존성 주입 ( DI )의존성 주입(Dependency Injection, DI)은 객체 지향 프로그래밍에서 객체 간의 관계를 설정하는 방식 중 하나입니다.객체가 필요한 의존성( 다른 객체 )을 직접 생성하지 않고 외부에서 주입받는 방식을 말합니다.이를 통해 객체 간의 결합도를 낮추고, 유연한 코드와 테스트 가능성을 높일 수 있습니다. 만약 우리가 자동차를 만들고 있다고 했을 때, 자동차는 엔진, 타이어, 핸들 등 여러 부품이 필요합니다. 만약 자동차가 엔진을 스스로 만들어야 한다면, 자동차 클래스 내부에서 엔진을 직접 생성해야 합니다. 이 경우, 자동차와 엔진이 강하게 결합되어 있어서 자동차를 테스트하거나 엔진을 교체하는 것이 매우 어렵습니다. 하지만 의존성 주입을 사용하면, 자동차가 엔진을 외부에서 ..