본문 바로가기

Annotation8

섹션 6-8 [자동 구성 기반 애플리케이션] @Configuration과 proxybeanMethods @Configuration과 proxybeanMethods 일반적으로 팩토리 메소드를 통해 객체를 생성한다면 팩토리 메소드를 실행할때마다 새로운 객체가 생성되게 됩니다.static class MyConfig { Common common() { return new Common(); } Bean1 bean1() { return new Bean1(common()); } Bean2 bean2() { return new Bean2(common()); } } 일반적으로 위 처럼 MyConfig클래스를 만들고 bean1, bean2를 생성하는 팩토리 메소드를 가질때 Bea.. 2024. 6. 14.
섹션 6-7 [자동 구성 기반 애플리케이션] 자동 구성 애노테이션 적용 자동 구성 애노테이션 적용지금까지 구현한 구조 입니다. 이번 섹션에서는 간단하게 수정을 할 사항이 있습니다. @MyAutoConfiguration public class TomcatWebServerConfig { @Bean public ServletWebServerFactory servletWebServerFactory() { return new TomcatServletWebServerFactory(); } } @MyAutoConfiguration public class DispatcherServletConfig { @Bean public DispatcherServlet dispatcherServlet() { r.. 2024. 6. 14.
섹션 6-6 [자동 구성 기반 애플리케이션] 자동 구성 정보 파일 분리 자동 구성 정보 파일 분리package com.tobyspring.config; import org.springframework.boot.context.annotation.ImportCandidates; import org.springframework.context.annotation.DeferredImportSelector; import org.springframework.core.type.AnnotationMetadata; import java.util.stream.StreamSupport; /* DeferredImportSelector을 구현하여 config class의 이름을 selectImports 메소드를 통해 Sring배열로 리턴합니다. */ /* .. 2024. 6. 14.
섹션 6-4 [자동 구성 기반 애플리케이션] 인프라 빈 구성 정보와 분리 인프라 빈 구성 정보와 분리기존에 TomcatWebServerFactory, DispatcherServlet 구성정보를 등록하는 Config를 위 구조로 변경해보도록 하겠습니다. package com.tobyspring.tobyspringboot; import com.tobyspring.config.MySpringBootApplication; import org.springframework.boot.SpringApplication; @MySpringBootApplication public class TobyspringbootApplication { public static void main(String[] args) { SpringApplication.run(.. 2024. 6. 14.
섹션 6-2 [자동 구성 기반 애플리케이션] 합성 애노테이션 적용 합성 애노테이션 적용@SpringBootApplicationpublic class TobySpringBootApplication { public static void main(String[] args) { SpringApplication.run(TobySpringBootApplication.class, args); }}Spring Boot 프로젝트를 구성하면 우리가 직접 구현하지는 않는 서버를 구동시키는 Application class에서 사용되어지는 @SpringBootApplication 애노테이션을 직접 구현해보기 위해 합성 애노테이션으로 구성해보도록 하겠습니다. package com.tobyspring.tobyspringboot; import org.springframework.contex.. 2024. 6. 14.
섹션 6-1 [자동 구성 기반 애플리케이션] 메타 애노테이션과 합성 애노테이션 메타 애노테이션과 합성 애노테이션메타 애노테이션이 붙은 클래스를 기능적인 면에서는 애노테이션이 붙은 클래스와는 차이가 없습니다. 다만 컴포넌트를 직접 붙이는 것과 컨트롤러나 서비스 같은 컴포넌트를 메타 애노테이션으로 갖고 있는 애노테이션을 붙이는 것과 컴포넌트 스캐너가 바라볼 때는 동일합니다. 하지만 다른 이름을 부여하여 메타 애노테이션을 만들면 Spring Bean으로 등록되는것 뿐만 아니라 @Controller애노테이션이 붙은 Bean은 웹 MVC의 컨트롤러 역할을 담장하는지 혹은 비즈니스 로직을 담당하는 Service로직인지 추가적인 정보를 확인할 수 있습니다. 애노테이션 자체가 달라지기 때문에 여기에 부가적인 효과를 기대할 수 잇습니다.하지만 여기서 혼동할 수 있는 부분이 있는데 메타 애노테이션을.. 2024. 6. 14.