본문 바로가기

토비의스프링부트29

섹션 8-4 [외부 설정을 이용한 자동 구성] 프로퍼티 클래스의 분리 @Value값 디폴트 설정하기@MyAutoConfiguration @ConditionalMyOnClass("org.apache.catalina.startup.Tomcat") public class TomcatWebServerConfig { @Value("${contextPath:/}") String contextPath; @Bean("tomcatWebServerFactory") public ServletWebServerFactory servletWebServerFactory() { TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(); factory.setContextPath(this.contextPath); return .. 2024. 7. 26.
섹션 7-3 [조건부 자동구성] @Conditional, Condition 학습 테스트 @Conditional, Condition 학습 테스트public class ConditionalTest { @Test void conditional() { // true // Bean 구성정보를 확인하여 테스트할 수 있는객체 ApplicationContextRunner 생성 ApplicationContextRunner contextRunner1 = new ApplicationContextRunner(); // Configuration 구성정보 Class를 매개변수로 넘겨주고 contextRunner1.withUserConfiguration(Config1.class) .. 2024. 6. 27.
섹션 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-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-3 [자동 구성 기반 애플리케이션] 빈 오브젝트의 역할과 구분 빈 오브젝트의 역할과 구분스프링 컨테이너가 관리하는 빈은 크게 두가지로 구분해볼 수 있는데 컨테이너 인프라 스트럭처 빈, 애플리케이션 빈으로 구분할 수 있습니다.애플리케이션빈은 개발자가 어떤 빈을 사용하겠다고 명시적으로 구성정보를 제시한 빈 이라고 합니다. 컨테이너 인프라 스트럭처 빈은 스프링컨테이너 자신이거나 스프링 컨테이너가 기능을 확장하며 추가해온 부분들을 빈으로 등록하여 사용하는 빈이라고 합니다. 애플리케이션 빈은 또 두가지로 구분할 수 있는데 애플리케이션 로직빈, 애플리케이션 인프라스트럭처 빈으로 구분할 수 있습니다. 애플리케이션 로직 빈은 애플리케이션에 기능, 비즈니스 로직, 도메인 로직들을 담고있는 빈이라고 할 수 있으며 애플리케이션 인프라 스트럭처 빈은 대부분 기술과 관련되어있는데 대부분 .. 2024. 6. 14.