热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

springboot自定义starter的实现教程

下面小编就为大家分享一篇springboot自定义starter的实现教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

spring boot 使用 starter 解决了很多配置问题, 但是, 他是怎么来解决这些问题的呢?

这里通过一个简单的例子, 来看一下, starter是怎么来设置默认配置的.

一. 建 starter 项目

自定义的starter, 项目命名规范是: 自定义名-spring-boot-starter

先来看一下, 我最后的目录结构

1. 修改pom.xml文件


 4.0.0
 org.elvin
 my-spring-boot-starter
 1.0-SNAPSHOT
 jar
 my-spring-boot-starter
 http://maven.apache.org
 
 UTF-8
 
 
 
 org.springframework.boot
 spring-boot-autoconfigure
 1.5.9.RELEASE
 
 
 junit
 junit
 3.8.1
 test
 
 
 
 
 
 org.apache.maven.plugins
 maven-compiler-plugin
 2.3.2
 
  1.8
  1.8
 
 
 
 

其实只是加入了 spring-boot-autoconfigure

App文件中的main方法, 我注释掉了, 这个在这里没有用到

2. 配置属性对应的接收文件

package org.elvin;
import org.springframework.boot.context.properties.ConfigurationProperties;/**
 * author: Elvin
 * Date: 2017/12/12 14:51
 * Description:
 */
@ConfigurationProperties(prefix = "hello")
public class HelloServiceProperties {
 //默认配置内容
 private static final String MSG = "world";
 private String msg = MSG;
 public String getMsg() {
 return msg;
 }
 public void setMsg(String msg) {
 this.msg = msg;
 }
}

3. 对外Service

package org.elvin;
/**
 * author: Elvin
 * Date: 2017/12/12 14:55
 * Description:
 */
public class HelloService {
 private String msg;
 public String sayHello(){
 return "Hello " + msg;
 }
 public String getMsg() {
 return msg;
 }
 public void setMsg(String msg) {
 this.msg = msg;
 }
}

4. 对外service与配置对应文件关联

package org.elvin;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * author: Elvin
 * Date: 2017/12/12 14:59
 * Description:
 */
@Configuration
@EnableConfigurationProperties(HelloServiceProperties.class)
@ConditionalOnClass(HelloService.class)
@ConditionalOnProperty(prefix = "hello", value="enabled", matchIfMissing =true )
public class HelloServiceAutoConfiguration {
 @Autowired
 private HelloServiceProperties helloServiceProperties;
 @Bean
 @ConditionalOnMissingBean(HelloService.class)
 public HelloService helloService(){
 HelloService helloService = new HelloService();
 helloService.setMsg(helloServiceProperties.getMsg());
 return helloService;
 }
}

5. starter配置 : spring.factories

org.springframework.boot.autoconfigure.EnableAutoCOnfiguration=org.elvin.HelloServiceAutoConfiguration

做完这些之后, 通过 mvn clean install , 打包到maven库里面

二. spring boot 项目使用

新建一个spring boot 项目, 选择web即可.

目录结构:

先看一下引用pom.xml


   org.elvin
   my-spring-boot-starter
   1.0-SNAPSHOT
  

再看一下HelloController

package org.elvin.learn.springboot.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.elvin.*;
/**
 * author: Elvin
 * Date: 2017/12/12 15:34
 * Description:
 */
@RestController
@RequestMapping("hello")
public class HelloController {
 @Autowired
 private HelloService helloService;
 @RequestMapping("index")
 public String index(){
  return helloService.sayHello();
 }
}

这里的 HelloService 就是 前面自定义 starter 里面的.

1. 结果: 未配置情况下, 应该是输出 hello world

2. 在配置文件中, 加入 hello.msg=hahahahahah

这个例子很简单, 只是显示一下主要的过程, 别的都是各插件自己的逻辑判断了.

参考资料:

JavaEE开发的颠覆者 Spring Boot实战

以上这篇spring boot 自定义starter的实现教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


推荐阅读
  • 本文探讨了利用Java实现WebSocket实时消息推送技术的方法。与传统的轮询、长连接或短连接等方案相比,WebSocket提供了一种更为高效和低延迟的双向通信机制。通过建立持久连接,服务器能够主动向客户端推送数据,从而实现真正的实时消息传递。此外,本文还介绍了WebSocket在实际应用中的优势和应用场景,并提供了详细的实现步骤和技术细节。 ... [详细]
  • 在搭建Hadoop集群以处理大规模数据存储和频繁读取需求的过程中,经常会遇到各种配置难题。本文总结了作者在实际部署中遇到的典型问题,并提供了详细的解决方案,帮助读者避免常见的配置陷阱。通过这些经验分享,希望读者能够更加顺利地完成Hadoop集群的搭建和配置。 ... [详细]
  • Hadoop 2.6 主要由 HDFS 和 YARN 两大部分组成,其中 YARN 包含了运行在 ResourceManager 的 JVM 中的组件以及在 NodeManager 中运行的部分。本文深入探讨了 Hadoop 2.6 日志文件的解析方法,并详细介绍了 MapReduce 日志管理的最佳实践,旨在帮助用户更好地理解和优化日志处理流程,提高系统运维效率。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 虚拟网络连接配置指南旨在详细阐述如何在两台区域边界路由器(ABR)之间,通过一个非骨干区域(即传输区域)建立一条逻辑连接通道。该指南提供了具体的配置步骤和最佳实践,帮助网络管理员高效地实现跨区域的虚拟连接,确保网络的稳定性和可靠性。 ... [详细]
  • 利用 Spring BeanUtils 实现 JavaBean 的深度克隆与属性复制 ... [详细]
  • 利用Apache构建高效稳定的Web服务器环境
    本文详细介绍了如何利用Apache构建高效稳定的Web服务器环境。首先,概述了Apache服务器的基本概念及其安装步骤,并深入探讨了相关配置文件的设置方法。接着,通过具体的实验环境示例,展示了服务端(域名:zhangpp63.cn,IP地址:192.168.1.63)和客户端的配置过程,确保读者能够全面理解并实际应用这些技术。此外,还提供了一些优化建议,以提高服务器的性能和稳定性。 ... [详细]
  • 如何使用 net.sf.extjwnl.data.Word 类及其代码示例详解 ... [详细]
  • 在Linux环境下,本文详细探讨了Apache服务器中CGI技术的应用与实现。首先,通过使用yum包管理器安装了必要的软件,如PHP。安装完成后,对Apache服务器进行了配置,确保CGI功能正常运行。此外,还介绍了如何编写和调试CGI脚本,以及如何在实际环境中部署这些脚本以提供动态网页内容。实验结果表明,通过合理的配置和优化,Apache服务器能够高效地支持CGI应用程序,为用户提供丰富的交互体验。 ... [详细]
  • 本文深入解析了 Apache 配置文件 `httpd.conf` 和 `.htaccess` 的优化方法,探讨了如何通过合理配置提升服务器性能和安全性。文章详细介绍了这两个文件的关键参数及其作用,并提供了实际应用中的最佳实践,帮助读者更好地理解和运用 Apache 配置。 ... [详细]
  • 在《PHP应用性能优化实战指南:从理论到实践的全面解析》一文中,作者分享了一次实际的PHP应用优化经验。文章回顾了先前进行的一次优化项目,指出即使系统运行时间较长后出现的各种问题和性能瓶颈,通过采用一些通用的优化策略仍然能够有效解决。文中不仅详细阐述了优化的具体步骤和方法,还结合实例分析了优化前后的性能对比,为读者提供了宝贵的参考和借鉴。 ... [详细]
  • HBase客户端Table类中getRpcTimeout方法的应用与编程实例解析 ... [详细]
  • 在Hive中合理配置Map和Reduce任务的数量对于优化不同场景下的性能至关重要。本文探讨了如何控制Hive任务中的Map数量,分析了当输入数据超过128MB时是否会自动拆分,以及Map数量是否越多越好的问题。通过实际案例和实验数据,本文提供了具体的配置建议,帮助用户在不同场景下实现最佳性能。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • HTTP协议作为互联网通信的基础,其重要性不言而喻。相比JDK自带的URLConnection,HttpClient不仅提升了易用性和灵活性,还在性能、稳定性和安全性方面进行了显著优化。本文将深入解析HttpClient的使用方法与技巧,帮助开发者更好地掌握这一强大的工具。 ... [详细]
author-avatar
手机用户2502890621
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有