Spring Boot/Spring Boot Auto Configuration(18)
-
AutoConfigurationImportSelector
AutoConfigurationImportSelector는 Spring Boot의 자동 구성(autoconfiguration) 메커니즘에서 중요한 역할을 담당하는 클래스입니다. 이 클래스는 애플리케이션이 시작될 때 필요한 자동 구성 클래스를 동적으로 선택하는데 사용됩니다. Spring Boot에서는 기본적으로 META-INF/spring.factories 파일을 통해 자동 구성 클래스를 찾지만, Spring Boot 2.7 이후로는 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 파일도 함께 사용되기 시작했습니다.자세한 내용은 다음과 같습니다.1. AutoConfigurationImportSelector의 역..
2024.10.18 -
DeferredImportSelector
DeferredImportSelector는 Spring Framework에서 구성 클래스를 동적으로 로딩하는 인터페이스인 ImportSelector를 확장한 인터페이스로, 일반 ImportSelector보다 더 나중에 실행되어 구성 클래스를 로딩할 수 있습니다. DeferredImportSelector는 스프링 컨텍스트가 초기화되는 과정에서 다른 빈이나 구성이 먼저 처리된 후에 실행됩니다. 이 특성 때문에 주로 프레임워크 확장, 모듈화된 구성, 또는 복잡한 로딩 순서가 필요한 경우에 사용됩니다.주요 개념 및 사용 목적ImportSelector는 구성 클래스를 동적으로 로드하는 기능을 제공합니다.DeferredImportSelector는 '지연된(Deferred)' 방식으로 ImportSelector보다..
2024.10.17 -
spring-boot-autoconfigure.jar
spring-boot-autoconfigure.jar 내의 각 패키지들은 스프링 부트의 자동 구성(Auto-Configuration) 기능을 통해 사용됩니다. 자동 구성은 애플리케이션이 실행될 때, 클래스패스에 존재하는 라이브러리와 환경을 감지하여 필요한 빈(bean)을 자동으로 생성하고 설정하는 스프링 부트의 핵심 기능 중 하나입니다.각 패키지들은 특정 기능(예: JPA, 데이터베이스, 웹 서버, 보안 등)에 대한 자동 구성을 제공하며, 이러한 패키지들이 언제 사용되는지를 이해하려면 애플리케이션의 요구에 따라 자동 구성 클래스가 언제 로드되는지를 이해하는 것이 중요합니다.spring-boot-autoconfigure.jar의 주요 패키지들이 사용되는 시점1. 데이터베이스 관련 자동 구성 패키지패키지 예..
2024.10.16 -
spring.factories
스프링의 SpringFactoriesLoader 클래스는 META-INF/spring.factories 파일에서 특정 타입의 팩토리 구현체들을 로드하고 인스턴스화합니다. 이 과정은 스프링의 자동 구성(Auto Configuration) 메커니즘에서 중요한 역할을 하며, 스프링 부트에서 많이 사용됩니다.스프링에서의 spring.factories 파일 역할spring.factories 파일은 스프링 부트와 스프링 프레임워크에서 사용하는 메타데이터 파일로, 클래스패스에 있는 자동 구성 클래스나 팩토리 클래스들을 정의하는 파일입니다.이 파일은 META-INF/spring.factories 경로에 위치하며, 여러 JAR 파일에 포함될 수 있습니다.스프링 부트는 이 파일을 통해 자동 구성 클래스, 애플리케이션 초기..
2024.10.16 -
Project Classpath
프로젝트의 클래스패스(Classpath)는 프로젝트가 실행될 때 JVM이 클래스, 리소스, 라이브러리를 찾기 위해 참조하는 경로입니다. 클래스패스는 컴파일 시간과 실행 시간 모두에서 사용되며, 프로젝트의 빌드 시스템(예: Maven)과 IDE(예: STS4, IntelliJ) 설정에 따라 달라집니다.프로젝트의 클래스패스1. 로컬 파일 시스템프로젝트 클래스패스는 주로 프로젝트의 특정 디렉토리와 외부 라이브러리(예: Maven 의존성 라이브러리)로 구성됩니다.로컬 파일 시스템에서 클래스패스는 다음과 같은 요소들을 포함할 수 있습니다:소스 코드 디렉토리: 예를 들어, src/main/java는 프로젝트의 소스 파일들이 위치한 디렉토리로 클래스패스에 포함됩니다.컴파일된 클래스 파일: 프로젝트의 컴파일된 클래스 ..
2024.10.16 -
@AutoConfigurationPackage
@AutoConfigurationPackage는 스프링 부트에서 자동 구성과 관련된 패키지 스캐닝을 도와주는 어노테이션으로, 일반적으로 스프링 부트의 자동 구성 기능을 더욱 효율적으로 사용하기 위해 사용됩니다. 이 어노테이션은 스프링 부트의 자동 구성 메커니즘에서 중요한 역할을 합니다. 주로 @EnableAutoConfiguration 또는 @SpringBootApplication과 함께 사용되며, 자동으로 패키지를 스캔하여 특정 컴포넌트들을 등록할 때 유용합니다.@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@Import(AutoConfigurationPackages.Registrar.class)publi..
2024.10.16