>  기사  >  Java  >  springboot에서 스타터를 사용자 정의하는 방법

springboot에서 스타터를 사용자 정의하는 방법

PHPz
PHPz앞으로
2023-05-28 15:25:461656검색

맞춤형 스타터 명명 규칙

artifactId의 명명 규칙에 주의하세요. Spring 공식 스타터는 일반적으로 spring-boot-starter-web과 같이 spring-boot-starter-{name}으로 명명됩니다. 이름 지정은 mybatis-spring-boot-starter와 같은 {name}-spring-boot-starter 형식을 따라야 합니다. 여기서 생성된 프로젝트의 이슈 ID는 helloworld-spring-boot-starter

Develop Starter steps

  • Create Starter project

  • Starter에 필요한 구성(Properties) 클래스를 정의

  • Write입니다. 자동 구성 클래스

  • spring.factories 파일을 작성하여 자동 구성 클래스를 로드

  • 구성 프롬프트 파일 spring-configuration-metadata.json 작성(필요하지 않음)

특정 프로세스

구성 클래스를 생성합니다

@ConfigurationProperties를 생성하여 구성의 접두사를 정의합니다

@EnableConfigurationProperties(InfluxdbProperties.class)
@ConfigurationProperties(prefix = "spring.influxdb")
public class InfluxdbProperties {
 private String username;
 public String getDatabase() {
   return database;
 }
 public void setDatabase(String database) {
   this.database = database;
 }
}

자동 구성 클래스를 작성합니다

  • @EnableConfigurationProperties를 생성하여 종속 속성 클래스를 구성합니다

  • @ConditionalOnProperty를 구성하여 구성의 로드 규칙을 구성합니다.

    • 값은 어떤 속성을 참조합니까?

    • havingValue 필드는 값을 구성할 때 구성을 로드하는 것을 의미합니다.

    • matchIfMissing은 구성된 값 필드가 구성되지 않은 경우의 기본값을 나타냅니다.

  • @Bean은 자동으로 주입된 bean을 구성합니다

  • springboot에 고유한 일반적인 조건부 종속성 주석에는

    • @ConditionalOnBean이 포함됩니다. 이는 현재 컨텍스트에 존재할 때만 Bean을 인스턴스화합니다.

    • @ConditionalOnClass, 이 Bean은 클래스가 클래스 경로에 있을 때만 인스턴스화됩니다.

    • @ConditionalOnExpression, 이 Bean은 표현식이 true인 경우에만 인스턴스화됩니다.

    • @ConditionalOnMissingBean, 이 Bean은 현재 컨텍스트에 Bean이 없는 경우에만 인스턴스화됩니다.

    • @ConditionalOnMissingClass, 이 Bean은 클래스 경로에 클래스가 없는 경우에만 인스턴스화됩니다.

    • @ConditionalOnNotWebApplication, 이 Bean은 웹 애플리케이션이 아닌 경우에만 인스턴스화됩니다.

    • @AutoConfigureAfter, 자동 구성이 완료된 후 Bean을 인스턴스화합니다.

    • @AutoConfigureBefore, 자동 구성을 완료하기 전에 Bean을 인스턴스화합니다.

@Configuration
@Order(1)
@EnableConfigurationProperties(InfluxdbProperties.class)
@ConditionalOnClass(InfluxdbProperties.class)
@ConditionalOnProperty(prefix = "spring.influxdb", value = "use-influxdb", havingValue="true" ,matchIfMissing = false)
public class InfluxdbAutoConfiguration {
private String scanEntitySuffix = "Entity.class";

@Bean
@ConditionalOnMissingBean(AiInfluxdbTemplate.class)
@Order(Ordered.HIGHEST_PRECEDENCE)
public AiInfluxdbTemplate AiInfluxdbTemplate(InfluxdbProperties influxdbProperties){
  return new AiInfluxdbTemplate(influxdbProperties);
}
}

spring.factories 파일 작성

Spring Boot는 기본적으로 시작 클래스와 동일한 수준에서 패키지를 스캔합니다. Starter 및 시작 클래스가 동일한 기본 패키지 아래에 있지 않으면 spring.factories 파일이 적용됩니다

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.ai.base.boot.influxdb.InfluxdbAutoConfiguration

위 내용은 springboot에서 스타터를 사용자 정의하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제