Traditional Spring 프로젝트에는 많은 구성 파일이 있습니다. 예를 들어 Redis를 사용하려면 일반적으로 해당 종속 jar 패키지 외에도 애플리케이션에서 JedisConnectionFactory, JedisPoolConfig 및 RedisTemplate을 구성해야 합니다. xml. 그러나 SpringBoot를 사용하면 시스템은 pom.xml의 jar 패키지를 기반으로 이러한 클래스를 자동으로 생성하고 IOC 컨테이너에 삽입합니다.
기존 Spring 프로젝트에서는 구성이 필요합니다
<bean id="jedisConnectionFactory" class="...JedisConnectionFactory"></bean> <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"></bean> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"></bean>
그러나 SpringBoot를 사용할 때는 pom에 해당 jar 패키지를 도입하는 것 외에도 spring-boot-autoconfigure.jar/META-INF/spring에서 120개 이상의 기본 기능 구성 클래스를 가져옵니다. .factories(redis 함수 구성 클래스 RedisAutoConfiguration의 정규화된 이름 포함) 일반적으로 함수 구성 클래스는 이 함수를 둘러싸고 생성 관리를 담당합니다. RedisAutoConfiguration과 같은 여러 관련 기능 클래스는 세 가지 기능 클래스 생성을 담당합니다.
JedisConnectionFactory, RedisTemplate 및 StringRedisTemplateorg.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration,\
@Configuration @ConditionalOnClass({ JedisConnection.class, RedisOperations.class, Jedis.class }) @EnableConfigurationProperties(RedisProperties.class) public class RedisAutoConfiguration {}
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
pom.xml에는 해당 jar 패키지가 필요합니다.
종속 주석
@EnableAutoConfiguration: 자동 조립을 시작하는 SB 애플리케이션의 기능을 나타냅니다(해당 빈을 IOC 컨테이너에 로드하는 것을 포함하고, 기본 구성에 따라 속성에 값을 할당합니다)
는 다양한 주석을 통해 클래스 간의 종속성을 실현합니다. 컨테이너가 Application.run을 시작하면 EnableAutoConfigurationImportSelector.class(실제로는 상위 클래스) 메서드의 selectImports 메서드를 호출합니다.
selectImports 메소드는 결국 SpringFactoriesLoader.loadFactoryNames 메소드를 호출하여 일반적으로 사용되는 BeanConfiguration의 전체 목록을 얻습니다.
loadFactoryNames 메소드는 FACTORIES_RESOURCE_LOCATION(즉, spring-boot-autoconfigure.jar 아래의 spring.factories)을 읽고 완전한 이름을 얻습니다. 모든 Spring 관련 Bean의 ClassName은 약 120개
selectImports 메소드가 계속해서 filter(configurations, autoConfigurationMetadata)를 호출하는데, 가장 중요한 것은 이러한 BeanConfiguration의 조건에 따라 하나씩 필터링한다는 것입니다. @ConditionalOnClass. 이 조건부 주석은 jar 패키지에 이 조건부 종속 클래스가 있는지 확인하기 위해 클래스 경로에서 검색됩니다. 따라서 이러한 종속 클래스를 갖고 IOC에서 요구하는 일부 기본 구성 Bean을 생성하려면 해당 jar 패키지를 사용할 수 있어야 합니다.
마지막으로 기본 EnableConfigurationPropertie 클래스의 속성 값에 정규화된 BeanConfiguration을 삽입하고 이를 IOC 환경에 삽입합니다
위 내용은 Java SpringBoot 자동 어셈블리의 원리는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!