Spring에서의 @Resource와 @Autowired 차이점
무엇이 @Resource와 @Autowired를 다르게 만드나요? @Resource와 @Autowired는 자바 및 Spring 프레임워크에서 객체를 주입할 때 사용하는 어노테이션입니다. 그러나 이 두 어노테이션은 내부 작동 방식과 사용법에 몇 가지 차이가 있습니다. 작동 원리 @Autowired는 타입에 기반한 주입을 수행합니다. 즉, 같...
무엇이 @Resource와 @Autowired를 다르게 만드나요? @Resource와 @Autowired는 자바 및 Spring 프레임워크에서 객체를 주입할 때 사용하는 어노테이션입니다. 그러나 이 두 어노테이션은 내부 작동 방식과 사용법에 몇 가지 차이가 있습니다. 작동 원리 @Autowired는 타입에 기반한 주입을 수행합니다. 즉, 같...
소개 Spring Framework에서는 데이터베이스 트랜잭션을 관리하기 위해 @Transactional이라는 어노테이션을 제공합니다. 이 글에서는 이 어노테이션을 사용할 때 시스템 내부에서 어떤 프로세스가 진행되는지 자세히 알아보겠습니다. @Transactional의 작동 원리 Spring의 @Transactional 어노테이션은 메서드 또는 ...
개요 Spring MVC는 자바 웹 애플리케이션을 개발할 때 사용하는 프레임워크입니다. 이 글에서는 Spring MVC에서 @ResponseBody 어노테이션을 사용한 메서드에서 HTTP 400 (Bad Request) 오류를 어떻게 응답하는지에 대해 알아보겠습니다. @ResponseBody와 HTTP 상태 코드 @ResponseBody 어노테이...
개요 Spring Framework에서 파일을 다운로드하는 작업은 꽤 자주 일어나는 시나리오 중 하나입니다. 이 글에서는 StackOverflow에서 나온 여러 가지 방법 중, 가장 효율적인 방법을 상세하게 소개하려고 합니다. HttpServletResponse와 OutputStream 이용 첫 번째로, HttpServletResponse 객체와...
오류 개요 Hibernate에서 프로그래밍을 할 때, 종종 "Failed to lazily initialize a collection of role"라는 오류 메시지를 만나게 됩니다. 이 오류는 대부분 객체-관계 매핑(ORM, Object-Relational Mapping)의 지연 로딩(Lazy Loading) 설정 때문에 발생합니다. 지연 로딩이란...
오류의 본질: No Suitable Constructor Found for Type 먼저, JSONMappingException: No Suitable Constructor Found for Type 오류가 어떤 상황에서 발생하는지 알아보겠습니다. 이 오류는 Java에서 Jackson 라이브러리를 사용하여 JSON을 객체로 변환할 때 나타납니다. 주...
개요 Spring Boot를 사용하다 보면 데이터베이스와의 상호작용을 추적하고 싶을 때가 많습니다. 이 글에서는 Spring Boot에서 SQL 문장을 로깅하는 방법에 대해 자세히 알아보겠습니다. 로깅 레벨 설정하기 먼저, application.properties 또는 application.yml 파일에 로깅 레벨(logging level)을 설...
스프링 빈의 기본 개념 스프링 빈(Spring Bean)은 스프링 프레임워크에서 중요한 요소로, 애플리케이션의 핵심을 구성합니다. 스프링 빈은 스프링 컨테이너에 의해 관리되는 객체입니다. 여기서 ‘객체’란 프로그래밍에서 데이터와 기능이 합쳐진 것을 의미합니다. 스프링 빈은 스프링 컨테이너가 생성, 구성 및 관리하는 객체의 인스턴스를 의미합니다. 인스...
Isolation(고립성)이란 무엇인가 Isolation은 데이터베이스 트랜잭션에서 한 트랜잭션이 다른 트랜잭션에 영향을 주지 않도록 보장하는 성질입니다. 이를 통해 여러 트랜잭션이 동시에 실행될 때 문제가 발생하지 않도록 합니다. Spring에서는 @Transactional 애너테이션을 사용해 Isolation 레벨을 설정할 수 있습니다. Pro...
오토와이어링이란 무엇인가? 오토와이어링이란 스프링 프레임워크에서 제공하는 기능 중 하나로, 개발자가 직접 의존성을 주입(Dependency Injection)할 필요 없이 자동으로 의존성을 관리해줍니다. 이렇게 하면 코드가 간결해지고 유지 보수가 쉬워집니다. 어떻게 작동하는가? 빈(Bean) 스캔: 스프링 컨테이너는 먼저 프로젝트 내에 있는...