본문 바로가기

토비의스프링29

섹션 8-3 [외부 설정을 이용한 자동 구성] @Value와 PropertySourcesPlaceholderConfigurer @Value와 PropertySourcesPlaceholderConfigurer@MyAutoConfiguration @ConditionalMyOnClass("org.apache.catalina.startup.Tomcat") public class TomcatWebServerConfig { @Value("${contextPath}") String contextPath; @Bean("tomcatWebServerFactory") public ServletWebServerFactory servletWebServerFactory() { TomcatServletWebServerFactory factory = new TomcatServletWebServe.. 2024. 7. 26.
섹션 8-1 [외부 설정을 이용한 자동 구성] Enviroment 추상화와 프로퍼티 Enviroment 추상화와 프로퍼티스프링 부트는 외부 설정 정보를 이용해서 생성된 빈 오브젝트의 프로퍼티값을 수정할 수 있습니다.대부분 자동 구성에 의해서 만들어지는 빈 오브젝트는 대부분 디폴트값이 들어가 있습니다. 예시로 스프링 부트의 톰켓 포트번호를 지정하지 않아도 8080포트로 서블릿이 설정되는 부분이 있습니다.서블릿을 구성할때 직접 톰캣 구성정보를 등록하여 커스텀 빈 등록을 하여 사용할 수도 있지만 기술적으로 여러 지식이 필요한 기술 빈들이 존재하여 한두가지 설정을 변경하기 위해 직접 커스텀빈으로 생성하는 작업을 직접 작상한다는 것은 오류가 발생할 여기도 있고 굉장히 번거로운 일입니다.따라서 Spring boot는 Spring boot가 제공하는 자동 구성 Configuration클래스에 다양한.. 2024. 7. 26.
섹션 7-5 [조건부 자동구성] 자동 구성 정보 대체하기 자동 구성 정보 대체하기Spring Boot애플리케이션 구성 정보를 작성하는 방식은 크게 두 가지 나뉘어진다는 부분을 우리는 이전 공부한 내용을 토대로 이해할 수 있습니다.애플리케이션 로직을 담당하는 빈들을 사용자 구성 정보 방식으로 등록을 하고 주로 컴포넌트 스캔에 의해서 등록을 시킵니다.  일정한 패키지에 빈 클래스들을 등록합니다. 그리고 주로 기술과 관련된 빈들은 스프링 부트의 자동 구성 동작 방식에 의해서 말 그대로 자동으로 등록되게 구성합니다.이러한 이점을 통해 우리는 기존 스프링 프레임워크의 자율성으로 인해 환경을 구성하는데까지 너무나 많은 기술들을 결정하여 설정 했어야 하는 것에 비해 스프링 부트는 여러 개발자들에 의해 결정되고 노하우를 통해 정한 기술들을 미리 정의 하여 빠르게 스프링 프레.. 2024. 6. 27.
섹션 7-4 [조건부 자동구성] 커스텀 @Conditional 커스텀 @Conditional@MyAutoConfiguration @Conditional(JettyWebServerConfig.JettyCondition.class) public class JettyWebServerConfig { @Bean("jettyWebServerFactory") public ServletWebServerFactory servletWebServerFactory() { return new JettyServletWebServerFactory(); } static class JettyCondition implements Condition { @Override public boolean mat.. 2024. 6. 27.
섹션 7-2 [조건부 자동구성] @Conditional과 Condition @Conditional과 Condition@Conditional은 class레벨 뿐만 아니라 method레벨에도 애노테이션을 사용할 수 있습니다. 다만 class와 method에 동시에 애노테이션을 사용할경우 class레벨의 @Conditional이 우선순위가 가장 높으며 class레벨의 @Conditional의 Condition구현체의 값이 false라면 method레벨의 값은 체크하지않고 무조건 false로 bean으로 등록되지 않습니다. @MyAutoConfiguration /* JettyWebServerConfig를 ConFiguration class Bean으로 등록할 것인지 스프링 컨테이너에게 알려주는 애노테이션 @Conditional에는 Condition의 구현체 클래스를.. 2024. 6. 27.
섹션 7-1 [조건부 자동구성] 스타터와 Jetty 서버 구성 추가 스타터와 Jetty 서버 구성 추가plugins { id 'java' id 'org.springframework.boot' version '2.7.6' id 'io.spring.dependency-management' version '1.1.5' } group = 'com.tobyspring' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '11' } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' // Spr.. 2024. 6. 27.