SpringBoot入门二-创建自己的starter

参考Spring Boot Starters - 御坂研究所

创建自己的starter

starter是配置和依赖的一种合成,方便开发人员在maven中构建应用程序。

starter会把需要用到的依赖全部包含进来,避免开发者自己手动引入依赖。

starter的逻辑

  • pom.xml
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starters</artifactId>
        <version>2.0.4.RELEASE</version>
    </parent>

    <dependencies>
        <!-- 自定义starter依赖此jar包 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
    </dependencies>
  • 创建ConfigurationProperties,设置默认配置,如果配置文件有同名的配置,会覆盖默认配置
package org.cc.http.configuration;

import org.springframework.boot.context.properties.ConfigurationProperties;


@ConfigurationProperties(prefix="http")// 自动获取配置文件中前缀为http的属性,把值传入对象参数
public class HttpConfigurationProperties {
    // 如果配置文件中配置了http.url属性,则该默认属性会被覆盖
    private String url = "http://www.baidu.com/";

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}
    
}
  • 创建业务类
package org.cc.http.configuration;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class HttpClient {

    private String url;

    // 根据url获取网页数据
    public String getHtml() {
        try {
            URL url = new URL(this.url);
            URLConnection urlConnection = url.openConnection();
            BufferedReader br = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "utf-8"));
            String line = null;
            StringBuilder sb = new StringBuilder();
            while ((line = br.readLine()) != null) {
                sb.append(line).append("\n");
            }
            return sb.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "error";
    }

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}

}
  • starter核心功能:创建HttpAutoConfiguration类,使用HttpConfigurationProperties定义的配置,返回一个业务对象
package org.cc.http.configuration;

import javax.annotation.Resource;

import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableConfigurationProperties(HttpConfigurationProperties.class)
public class HttpAutoConfiguration {

    @Resource
    private HttpConfigurationProperties properties; // 使用配置

    // 在Spring上下文中创建一个对象
    @Bean
    @ConditionalOnMissingBean
    public HttpClient init() {
        HttpClient client = new HttpClient();

        String url = properties.getUrl();
        client.setUrl(url);
        return client;
    }

}
  • 将HttpAutoConfiguration加入到src\main\resources\META-INF\spring.factories进行声明
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.cc.http.configuration.HttpAutoConfiguration

创建好starter之后,打包就可以使用了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值