SpringBoot 특별 연구 Part24 : 사용자 정의 SpringBoot 스타터 (스타터)

I. 개요 :

봄 부팅의 힘은 능력이다 장면을 추출 선발로
신속하게 해당 장면을 구성 할 수있는로드 실행만큼

다음 단계 사용자 정의 스타터 (장면 개시가) 있습니다 :
1 , 첫 번째 장면 결정하기 위해 필요한 종속성이 무엇인지
2 , 다음 쓰기 자동 구성을

사용 @Configuration클래스 구성 클래스를 지정하는 주석을

사용 @ConditionalOnXXX자동으로 클래스가 지정된 조건의 경우에 적용됩니다 구성 주석 충족
예 :

@ConditionalOnWebApplication(
    type = Type.SERVLET
)

사용 @AutoConfigurationAfter주석은 위해 자동으로 구성 클래스 지정
예 :

@AutoConfigureAfter({DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class, ValidationAutoConfiguration.class})

사용 @Bean컨테이너에 구성 요소를 추가 할 주석을

사용 @ConfigurationProperties주석 결합에 해당하는 xxxProperties 클래스 구성 바인딩 관련
예 :

@ConfigurationProperties(
    prefix = "spring.mvc"
)

사용 @EnableConfigurationProperties주석 시행 xxxProperties 클래스를 만들고 컨테이너에 추가
예 :

@EnableConfigurationProperties({WebMvcProperties.class, ResourceProperties.class})

클래스 패스에 반드시 META-INF아래 spring.factories가 정보 파일 이 자동으로 구성 클래스 경로를 지정
SpringBoot가 자동으로 시작 클래스에서 부하로 구성 알 수 있도록를하는의
경우 :

# Initializers
org.springframework.context.ApplicationContextInitializer=\
net.zjitc.springboot.listener.HelloApplicationContextInitializer

# Listener
org.springframework.boot.SpringApplicationRunListener=\
net.zjitc.springboot.listener.HelloSpringApplicationRunListener

주의 : 스타터 같아야 빈 JAR 파일 만 부가 제공 관리 의존성 다른 라이브러리 또는 자동 조립에 사용될 수있는 그 종속성을
구체적으로 기록하는 자동 구성 모듈 개시제 자동 구성 모듈에 의존
따라서 만 도입 촉진제 그것은 자동 구성 모듈 도입 된 것으로 간주
XXX-스타터 (기자) → XXX-스타터 autoconfigurer (자동 구성 모듈)입니다

이름 지정 규칙 :

  • 공식 네임 스페이스를 SpringBoot :
    접두사 : "봄 부팅 - 도입 -"
    모드 : spring-boot-starter-模块名
    예 : 스프링 부팅 스타터 웹
  • 사용자 정의 네임 스페이스 :
    접미사 "- 봄 - 부팅 스타터 "
    모드 : 模块名-spring-boot-starter
    예 : MyBatis로 스프링 - 부팅 선발

둘째, 프로젝트가 생성

때문에 시작하고 자동 구성 모듈 그러므로이 두 편의를 위해 IDEA에서 빈 프로젝트를 생성 할 필요성
그림 삽입 설명 여기
을 클릭 플러스 모듈을 추가하는 서명
그림 삽입 설명 여기
새 모듈을 선택

그런 다음 Maven 프로젝트와 프로젝트 SpringBoot를 만들

메이븐 프로젝트 :
그림 삽입 설명 여기
SpringBoot 프로젝트 :
그림 삽입 설명 여기
스타터 SpringBoot으로 Maven 프로젝트는 자동 구성 모듈로 작동


셋째, 구성

1, 우선은 좋은 치어 구성 파일에 따라 달라집니다

스타터 프로젝트 POM 파일은 자동 구성 모듈을 소개합니다 :

<!-- 启动器 -->
<dependencies>
	<!-- 引入自动配置模块 -->
	<dependency>
		<groupId>net.zjitc.starter</groupId>
		<artifactId>zjitc-spring-boot-starter-autoconfigurer</artifactId>
		<version>0.0.1-SNAPSHOT</version>
	</dependency>
</dependencies>

자동 구성 모듈 치어 파일은 스프링 부팅 스타터를 도입해야합니다
스프링 부팅 스타터이기 때문에 모든 스타터의 기본 구성이 도입 될 필요가있을 것이다

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter</artifactId>
	</dependency>
</dependencies>

2, 쓰기 자동 구성 모듈 다음 :

HelloProperties.java 클래스 속성 :
속성 클래스 정의 매개 변수 자동 설정이 사용되는 모든 속성을 필요로
사용할 수있는 클래스를 @ConfigurationProperties주석, 지정된 접두사
있도록 구성 파일의 매개 변수를 수정하는 접두사로 지정 될 수있다

@ConfigurationProperties(prefix = "zjitc.hello")
public class HelloProperties {

    // 两个属性 用于绑定配置
    private String prefix;
    private String suffix;

    public String getPrefix() {
        return prefix;
    }

    public void setPrefix(String prefix) {
        this.prefix = prefix;
    }

    public String getSuffix() {
        return suffix;
    }

    public void setSuffix(String suffix) {
        this.suffix = suffix;
    }
}

HelloService.java 클래스 메소드
방법을 제공 수행 할 :

public class HelloService {

	// 需要创建配置类对象 因为要使用配置类中的参数
    HelloProperties helloProperties;

    public String sayHello(String name)
    {
        // 使用配置类中的参数
        return helloProperties.getPrefix()+name+helloProperties.getSuffix();
    }

    public HelloProperties getHelloProperties() {
        return helloProperties;
    }

    public void setHelloProperties(HelloProperties helloProperties) {
        this.helloProperties = helloProperties;
    }
}

HelloServiceAutoConfiguration.java 자동 구성 클래스는
이 클래스는 사용 있도록 구성 할 가지고 자동으로 구성 클래스하지만 첫 번째 클래스 @Configuration주석 지정
@ConditionalOnWebApplication주석 만 적용 표현한다 웹 애플리케이션되고
@EnableConfigurationProperties, 적용 할 수 있도록 전달 된 지정된 속성 클래스 속성 메모를 부여합니다 클래스 class 속성
클래스의 방법의 클래스 구성 초기화 :

// 自动配置类
@Configuration
// 只有Web应用才会生效
@ConditionalOnWebApplication
// 让属性类中的属性生效
@EnableConfigurationProperties(HelloProperties.class)
public class HelloServiceAutoConfiguration {

    @Autowired
    HelloProperties helloProperties;

    @Bean
    public HelloService helloService()
    {
        HelloService helloService=new HelloService();
        // 设置属性配置文件
        helloService.setHelloProperties(helloProperties);
        return helloService;
    }
}

다음 구성 /METE-INF/spring.factories프로파일
구성 파일에 배치 자동으로 시작 로딩 클래스에서 구성 경로 :

# 指定启动时要加载的自动配置类
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
net.zjitc.starter.HelloServiceAutoConfiguration

이 같은 마지막 디렉토리 :
그림 삽입 설명 여기

자동으로 모듈을 구성합니다 메이븐 라이프 사이클을 설치 입력하고 선발이되어 창고에 설치
그림 삽입 설명 여기
그림 삽입 설명 여기
창고의 설치가 좌표를 소개하는 다른 프로젝트에서 직접 사용할 수 있습니다 후


넷째, 테스트

그런 다음 테스트하기위한 프로젝트를 만듭니다
그림 삽입 설명 여기
만하면 좌표 스타터 소개 할 수 있습니다 :
모든 시동이 자동으로 모든 가져 오기를 구성합니다 의존하기 때문에

<!-- 引入自定义的starter -->
<dependency>
	<groupId>net.zjitc.zjitc</groupId>
	<artifactId>zjitc-spring-boot-starter</artifactId>
	<version>1.0-SNAPSHOT</version>
</dependency>

그런 다음 간단한

시험 종류 :

@RestController
public class HelloController {

    @Autowired
    HelloService helloService;

    @GetMapping("hello")
    public String hello()
    {
        return helloService.sayHello("Piconjo");
    }
}

그림 삽입 설명 여기
런처 클래스에 도입 할 수 스타터 도입 설명하고있다

시험 방법 때문에 호출은이 두 가지 속성과 두 가지 속성없이 사전 구성된 초기 값을 사용해야
하기 때문에 속성에서 테스트 프로젝트에 구성해야합니다 :

# 配置前后缀
zjitc.hello.prefix=ZJITC
zjitc.hello.suffix=SOFTWARE1801

테스트가 성공적으로
그림 삽입 설명 여기


게시 된 174 개 원래 기사 · 원 찬양 5 ·은 240,000 + 조회수

추천

출처blog.csdn.net/Piconjo/article/details/105144131