springboot自定义starter

1,创建一个空工程

2,new一个Modules  ---------------- maven (启动器) :

springboottest-spring-boot-starter

3,new一个Modules  ---------------- spring(做自动配置的):

springboottest-spring-boot-starter-autoconfigurer

4,启动器pom文件中引入自动配置模块:

    <!--启动器-->
     <dependencies>
         <!--引入自动配置模块-->
          <dependency>
              <groupId>com.springboottest.starter</groupId>
              <artifactId>springboottest-spring-boot-starter-autoconfigurer</artifactId>
              <version>0.0.1-SNAPSHOT</version>
          </dependency>
     </dependencies>

5,自动配置器中,删除主主程序等不需要的内容并编写启动器:

  1. pom文件中引入启动器(所有starter的基本配置):

    <dependencies>
            <!--引入spring-boot-starter-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
    
        </dependencies>
  2. 编写会被调用的service
  3. package com.springboottest.starter;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    
    //绑定文件中所有以springboottest.hello 开始的配置
    @ConfigurationProperties(prefix = "springboottest.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;
        }
    }
    package com.springboottest.starter;
    
    public class HelloService {
       HelloProperties helloProperties;
    
        public HelloProperties getHelloProperties() {
            return helloProperties;
        }
    
        public void setHelloProperties(HelloProperties helloProperties) {
            this.helloProperties = helloProperties;
        }
    
        public  String sayHello(String name){
          return  helloProperties.getPrefix()+"-"+ name + helloProperties.getSuffix();
        };
    }
    package com.springboottest.starter;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
    import org.springframework.boot.context.properties.EnableConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    @ConditionalOnWebApplication//web应用才生效
    @EnableConfigurationProperties(HelloProperties.class)//让属性生效 HelloProperties helloProperties;
    public class HelloServiceAutoConfiguration {
    
        //让属性生效 HelloProperties helloProperties;
        @Autowired
        HelloProperties helloProperties;
        @Bean
        public  HelloService helloService(){
            HelloService service = new HelloService();
            service.setHelloProperties(helloProperties);
            return  service;
        }
    
    }
  4. 配置spring.factories让自动配置类生效

    org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.springboottest.starter.HelloServiceAutoConfiguration
  5. springboottest-spring-boot-starter  启动器编写完成

6,新建项目,调用自定义启动器的方法

  1. pom文件引入自定义启动器

    <!--引入自定义starter-->
            <dependency>
                <groupId>com.springboottest.starter</groupId>
                <artifactId>springboottest-spring-boot-starter</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
  2. 按照规则编写properties,增加前后缀

    springboottest.hello.prefix=SPRINGBOOT
    springboottest.hello.suffix=HELLO WORLD
  3. 调用方法                     

原文地址:https://www.cnblogs.com/MagicAsa/p/10750180.html

时间: 2024-10-16 20:12:37

springboot自定义starter的相关文章

springboot核心技术(四)-----Docker、数据访问、自定义starter

Docker 1.简介 Docker是一个开源的应用容器引擎:是一个轻量级容器技术: Docker支持将软件编译成一个镜像:然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使 用这个镜像: 运行中的这个镜像称为容器,容器启动是非常快速的. 2.核心概念 docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上): docker客户端(Client):连接docker主机进行操作: docker仓库(Registry):用来保存各种打包好的软件

SpringBoot编写自定义Starter

根据SpringBoot的Starter编写规则,需要编写xxxStarter依赖xxxAutoConfigurer,xxxStarter是一个空的jar,仅提供辅助性的依赖管理,引入其他类库 1.建立一个empty工程,建立一个普通maven模块xxxStarter,建立一个SpringBoot模块xxxAutoConfigurer,前者依赖后者 2.xxxAutoConfigurer: 新建:HelloService: public class HelloService { private

spring boot自定义starter

使用spring boot开发微服务后,工程的数量大大增加(一定要按照领域来切,不要一个中间件客户端包一个),让各个jar从开发和运行时自包含成了一个重要的内容之一.spring boot starter就可以用来解决该问题(没事启动时别依赖于applicationContext.getBean获取bean进行处理,依赖关系太折腾,有时候在复杂系统中解决此事比较麻烦,需要修改开源框架代码才能实现,反过来修改开源源码后,维护也是个麻烦事).言归正传,说说自定义starter.首先请熟悉spring

SpringBoot1.x之启动配置原理及自定义starter

1 启动配置原理 1.1 创建SpringApplication对象 @SuppressWarnings({ "unchecked", "rawtypes" }) private void initialize(Object[] sources) { //保存主配置类 if (sources != null && sources.length > 0) { this.sources.addAll(Arrays.asList(sources));

SpringBoot自定义Filter

SpringBoot自定义Filter SpringBoot自动添加了OrderedCharacterEncodingFilter和HiddenHttpMethodFilter,当然我们可以自定 义Filter. 自定义Filter需要两个步骤: 实现Filter[javax.servlet.Filter]接口,实现Filter方法 添加 @Configuration 注解,将自定义Filter加入过滤链 [过滤打印请求URL]实例代码如下: package xatu.zsl.Filter; i

springboot自定义错误页面

springboot自定义错误页面 1.加入配置: @Bean public EmbeddedServletContainerCustomizer containerCustomizer() { return (container -> { ErrorPage error401Page = new ErrorPage(HttpStatus.UNAUTHORIZED, "/401.html"); ErrorPage error404Page = new ErrorPage(Http

小代学Spring Boot之自定义Starter

想要获取更多文章可以访问我的博客?-?代码无止境. 使用Spring Boot框架一段时间之后的小代同学,发现在Spring Boot项目中经常会引入各种各样的Starter,例如Web项目的spring-boot-starter-web以及集成MyBatis时的mybatis-spring-boot-starter.那么这个Starter到底是些什么呢? 什么是Starter 经过一番研究,小代同学了解到Starter主要是Spring Boot用来简化项目依赖的一种形式,比如spring-b

SpringBoot自定义配置项

SpringBoot自定义配置项 Spring Boot内置的配置项远远不能支撑我们的程序运行,在项目设计的时候,往往因为扩展性的需要,项目需要预留很多自定义设置项,Spring Boot允许我们配置自定义选项. 学习视频: http://www.itlaoqi.com/chapter/1685.html 源码地址: QQ群 814077650 , 群共享中自助下载 老齐的官网: itlaoqi.com (更多干货就在其中) 在 Spring Boot中,有两种方式使用自定义选项 @Value

如何封装springboot的starter

--为啥要封装starter --如何封装 --测试 为啥要封装starter springboot的starter开箱即用,只需要引入依赖,就可以帮你自动装配bean,这样可以让开发者不需要过多的关注框架的配置. 如何封装 新建SpringBoot项目,引入以下依赖包到pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-config