1. 程式人生 > >springboot 自定義一個簡單的 starter

springboot 自定義一個簡單的 starter

1.新建專案 。

啟動器只用來做依賴匯入;
專門來寫一個自動配置模組;

idea 下建立空專案 hello-spring-boot-starter 新增兩個子模組
spring-boot-starter-autoconfigurer,
spring-boot-starter-helloworld。
autoconfigurer 自動配置模組,

<!--引入starter的基本配置-->
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
	</dependencies>

helloworld,使用的模組,該模組使用autoconfigurer

 <dependencies>
        <dependency>
            <groupId>com.ccu.hello</groupId>
            <artifactId>spring-boot-starter-autoconfigurer</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>

2,需要一個配置類,配置類需要提供好裝配好的類

載入的配置檔案的類

@ConfigurationProperties(prefix = "atguigu.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;
    }
}

配置類 需納入spring容器中

@Configuration
@ConditionalOnWebApplication //web應用才生效
@EnableConfigurationProperties(HelloProperties.class)
public class HelloServiceAutoConfiguration {
    @Autowired
    HelloProperties helloProperties;
    @Bean
    public HelloService helloService(){
        HelloService service = new HelloService();
        service.setHelloProperties(helloProperties);
        return service;  
    }
}

完成功能的類

public class HelloService {
    HelloProperties helloProperties;
    public HelloProperties getHelloProperties() {
        return helloProperties;
    }
    public void setHelloProperties(HelloProperties helloProperties) {
        this.helloProperties = helloProperties;
    }
    public String sayHellAtguigu(String name){
        return helloProperties.getPrefix()+"‐" +name + helloProperties.getSuffix();
    }
}

3自動裝配(關鍵)

在classpath下:META-INF/spring.factories配置
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.ccu.hello.springbootstarterautoconfigurer.HellloAutoConfiguration

最後使用idea maven 打包。

在新建一個專案匯入依賴即可
在這裡插入圖片描述

加入properties.yml配置項

hello:
  prefix: xiaozi
  suffer:  nihaoqiang

定義controller訪問

@Controller
public class HelloController {

    @Autowired
    private SayService sayService;

    @RequestMapping("/say/hello")
    @ResponseBody
    public String say(){
        return sayService.sayHello("haoren");
    }
}

最終效果

在這裡插入圖片描述

一個簡單的starter 就完成了。