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
테스트가 성공적으로