参考Spring Boot Starters - 御坂研究所

创建自己的starter

starter是依赖的一种synthesize(合成)。

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 {@Resourceprivate HttpConfigurationProperties properties; // 使用配置// 在Spring上下文中创建一个对象@Bean@ConditionalOnMissingBeanpublic 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之后,打包就可以使用了。

springboot配置详解

Spring Boot 2.0 教程 - 配置详解 - NNS - 博客园Spring Boot 可以通过properties文件,YAML文件,环境变量和命令行参数进行配置。属性值可以通过,@Value注解,Environment或者ConfigurationProperhttps://www.cnblogs.com/hitandrew/p/9062861.html

Java启动参数和脚本 - Howlet - 博客园

SpringBoot入门二相关推荐

  1. springboot 入门二- 读取配置信息一

    在上篇入门中简单介绍下springboot启动使用了大量的默认配置,在实际开发过程中,经常需要启动多个服务,那端口如何手动修改呢? 此篇就是简单介绍相关的配置文件信息. Spring Boot允许外部 ...

  2. SpringBoot入门到精通-SpringBoot启动流程(七)

    定义自己的starter SpringBoot入门到精通-Spring的注解编程(一) SpringBoot入门到精通-SpringBoot入门(二) SpringBoot入门到精通-Spring的基 ...

  3. SpringBoot入门(二)——起步依赖

    本文来自网易云社区 在前一篇我们通过简单几步操作就生成了一个可以直接运行的Web程序,这是因为SpringBoot代替我们做了许多工作,概括来讲可以分为起步依赖和自动配置.这一篇先来看看起步依赖. 项 ...

  4. SpringBoot入门建站全系列(二十七)WebSocket做简单的聊天室

    SpringBoot入门建站全系列(二十七)WebSocket做简单的聊天室 一.概述 WebSocket 是一种网络通信协议.RFC6455 定义了它的通信标准. WebSocket 是 HTML5 ...

  5. SpringBoot入门建站全系列(二十八)整合Kafka做日志监控

    SpringBoot入门建站全系列(二十八)整合Kafka做日志监控 一.概述 Apache Kafka是一个分布式发布 - 订阅消息系统和一个强大的队列,可以处理大量的数据,并使您能够将消息从一个端 ...

  6. SpringBoot入门建站全系列(二十六)Mongodb非关系型数据库的使用

    SpringBoot入门建站全系列(二十六)Mongodb非关系型数据库的使用 一.概述 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能 ...

  7. 【Java】SpringBoot入门学习及基本使用

    SpringBoot入门及基本使用 SpringBoot的介绍我就不多说了,核心的就是"约定大于配置",接下来直接上干货吧! 本文的实例: github-LPCloud,欢迎sta ...

  8. SpringBoot入门和配置

    一.SpringBoot入门和微服务简介  1.SpringBoot入门 springboot:J2EE一站式解决方案 springcloud:分布式整体解决方案 2.微服务简介    微服务:架构风 ...

  9. SpringBoot简介、SpringBoot 入门程序搭建、与JDBC、Druid、Mybatis和SpringData JPA的整合

    一.SpringBoot 简介: spring boot并不是一个全新的框架,它不是spring解决方案的一个替代品,而是spring的一个封装.所以,你以前可以用spring做的事情,现在用spri ...

最新文章

  1. 数论计算机科学与技术专业就业前景好,【数学】数学专业就业前景:你看不见的“前途似锦”...
  2. SAP Spartacus Header区域的渲染逻辑
  3. 西电开源社区Ubuntu 10.04软件源
  4. Spring总结四:IOC和DI 注解方式
  5. “手把手教你学linux驱动开发”OK6410系列之02---虚拟字符设备
  6. 如何利用python实现qq聊天_用Python写一个模拟qq聊天小程序的代码实例
  7. 处理中文乱码以及登陆验证的过滤器Filter(建议收藏)
  8. 查看python安装的库_查看python及其第三方库的版本和安装位置
  9. 成绩管理系统代码c语言,学生成绩管理系统(c语言源代码)
  10. EcShop二次开发学习方法和Ecshop二次开发必备基础
  11. 【024】基于51单片机的电子琴加音乐播放器系统Proteus仿真设计
  12. Linux:解决centos7每次更换IP方法
  13. 初次 使用RuoYi 若依框架总结(前端)
  14. 页面布局(1):淘宝首页
  15. Qt设置电脑桌面壁纸
  16. 2021 GitHub年度排行榜出炉!中文Top3项目诞生!
  17. python 如何把字符串转换成浮点数
  18. html与css第三天
  19. datastage transformer控件详解
  20. 解决Intellij idea 修改控制台的字体样式问题

热门文章

  1. java 数组数据类型_java基本数据类型和数组
  2. python dll注入 网络_python – 检测反射型DLL注入
  3. ssh是什么_【科普】SSH都不懂,还搞什么网络
  4. bash: jps: command not found
  5. mysql [ERR] 1273 - Unknown collation: ‘utf8mb4_0900_ai_ci‘
  6. Linux Shell脚本_较少Swap使用
  7. Kafka 监控 Kafka Eagle 精简版本
  8. python 按条件选择行和列数据_小白学数据结构-排序算法Python(冒泡、选择、快速、希尔等等)...
  9. C/C++ _strlwr_s 函数 – 字符串大写转小写- C语言零基础入门教程
  10. C语言 指针数组和数组指针区别 - C语言零基础入门教程