
스코프와 프록시import jakarta.annotation.PostConstruct;import jakarta.annotation.PreDestroy;import org.springframework.context.annotation.Scope;import org.springframework.context.annotation.ScopedProxyMode;import org.springframework.stereotype.Component;import java.util.UUID;@Component//@Scope(value = "request")@Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS)public class MyLogger { ..
ObjectProviderObjectProvider 를 공부하다가 의문이 생겨 정리할 겸 글을 작성한다.아래의 코드는 prototype Bean 옵션을 사용하고 있다.PrototypeBean 클래스를 사용하여 주입받는ClientBean 이 있다. package hello.core.scope;import jakarta.annotation.PostConstruct;import jakarta.annotation.PreDestroy;import jakarta.inject.Provider;import org.assertj.core.api.Assertions;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.ObjectProvide..
@Configuration 먼저 각각의 빈들은 @Configuration이 있든 없든 싱글톤으로 유지된다. @Configuration 어노테이션을 사용하지 않고@Bean으로만 사용한다면, 스프링 컨테이너에는 등록이 되지만SpringCGLIB 클래스가 자식으로 등록이 되지 않아 대부분의 싱글톤 기능을 모두 잃게 된다. 무슨 의미일까? 아래를 참고해보자.@Configurationpublic class AppConfig { @Bean public MemberService memberService() { System.out.println("call AppConfig.memberService"); return new MemberServiceImpl(memberRepository..

MVC:Model View Controller의 3단계로 나누어 개발한다.정적 컨텐츠:컨트롤러가 아닌, html코드 그대로 정적으로 클라이언트에게 응답API:보통 객체를 반환값으로 주며, HttpMessageConverter에 의해 Json으로 반환된다.@ResponseBody를 사용하면 viewResolver를 사용하지 않는다.대신에 HHTP의 BODY에 문자 내용을 직접 반환한다.package hello.hello_spring.domain;public class Member { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { ..