前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot之SpringBoot自定义Starter场景启动器

SpringBoot之SpringBoot自定义Starter场景启动器

作者头像
彼岸舞
发布2021-02-02 11:06:30
5990
发布2021-02-02 11:06:30
举报
文章被收录于专栏:java开发的那点事

SpringBoot之SpringBoot自定义Starter场景启动器

概念:

  相信能看到这里的应该清楚什么是场景启动器,而SpringBoot能够快速整合第三方环境依靠的就是Maven整合依赖+自定义Starter

  比如我们之前用的

  • spring-boot-starter-web
  • spring-boot-starter-aop
  • spring-boot-starter-jta-atomikos
  • spring-boot-starter-test
  • spring-boot-starter-freemarker
  • spring-boot-starter-thymeleaf
  • spring-boot-starter-jdbc
  • ...

  这些以spring-boot-starter开头的都是官方提供的,而mybatis的就不是 mybatis-spring-boot-starter 他是以mybatis开头的,以spring....结尾的,这说明他是第三方自定义的starter,别人能定义说明我们自己也能定义

  通过图片也能看出来,mybatis的图标是mybatis的,其他的都是SpringBoot的

  由此我们如果自己定义starter建议采用xxx-spring-boot-starter这样的命名

自定义Starter

新建项目

IDEA,创建一个SpringBoot项目,如果不会的可以看我之前的《SpringBoot之IDEA创建SpringBoot项目

创建完成的目录结构

Pom.xml修改过了,去除掉多余的配置,猪油AutoConfiguration的依赖,其他的之后再加

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.springboot</groupId>
    <artifactId>flower-spring-boot-starter</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>flower-spring-boot-starter</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>

    </dependencies>

</project>

开始编写代码

TokenProperties.java

代码语言:javascript
复制
package com.springboot.util;

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

/**
 * @author ZYGisComputer
 */
@ConfigurationProperties(prefix = "flower")
public class TokenProperties {

    private String tokenRedisHost;

    private String tokenRedisPwd;

    public String getTokenRedisHost() {
        return tokenRedisHost;
    }

    public void setTokenRedisHost(String tokenRedisHost) {
        this.tokenRedisHost = tokenRedisHost;
    }

    public String getTokenRedisPwd() {
        return tokenRedisPwd;
    }

    public void setTokenRedisPwd(String tokenRedisPwd) {
        this.tokenRedisPwd = tokenRedisPwd;
    }

    @Override
    public String toString() {
        return "TokenProperties{" +
                "tokenRedisHost='" + tokenRedisHost + '\'' +
                ", tokenRedisPwd='" + tokenRedisPwd + '\'' +
                '}';
    }
}

使用@ConfigurationProperties注解根据前缀依赖注入属性值

TokenService.java

代码语言:javascript
复制
package com.springboot.service;

import com.springboot.util.TokenProperties;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * @author ZYGisComputer
 */
public class TokenService {

    @Autowired
    private TokenProperties tokenProperties;

    public String getToken(){
        return tokenProperties.toString();
    }

}

通过服务返回属性值,这里做的是模拟数据,没有真的业务

TokenAutoConfiguration.java

代码语言:javascript
复制
package com.springboot.config;

import com.springboot.service.TokenService;
import com.springboot.util.TokenProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author ZYGisComputer
 */
@Configuration
@EnableConfigurationProperties(value = {TokenProperties.class})
public class TokenAutoConfiguration {

    @Bean
    public TokenService tokenService(){
        return new TokenService();
    }

}

通过TokenAutoConfiguration来完成TokenProperties的注册和TokenService的注册

在resource下创建META-INF文件夹,并创建spring.factories

表示Spring在启动中会加载这个文件

spring.factories

代码语言:javascript
复制
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.springboot.config.TokenAutoConfiguration

到此编写完成

通过Maven安装到本地

先执行clean 再执行install

安装成功

使用Starter

项目Maven依赖

代码语言:javascript
复制
<dependency>
            <groupId>com.springboot</groupId>
            <artifactId>flower-spring-boot-starter</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

在项目依赖完成后,在application.yml配置中写是没有提示的,只需要在flower-spring-boot-starter项目中的Pom.xml添加上这个依赖就可以

代码语言:javascript
复制
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

添加完成后重新clean install然后依赖这个starter的项目Maven刷新重新输入就有提示了

修改application-dts.yml

这样我就可以使用这个自定义starter了,修改代码

编写一个获取接口

启动项目测试

测试成功

作者:彼岸舞

时间:2021\01\29

内容关于:SpringBoot

本文来源于网络,只做技术分享,一概不负任何责任

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringBoot之SpringBoot自定义Starter场景启动器
    • 概念:
      • 自定义Starter
        • 新建项目
        • 开始编写代码
      • 使用Starter
        • 项目Maven依赖
      • 启动项目测试
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档