IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 自定义starter 案例 -> 正文阅读

[Java知识库]自定义starter 案例

????????昨天写了一个自定义starter的demo,晚上正好有时间,整理了一下,这里简单整理一下;

目录

1.创建一个maven 项目,项目结构如下;

2.在父项目中引入相关坐标;

3.创建mystarterdemo 子模块,代码结构如下;

?4. 这里主要代码是??MyStarterAutoConfiguration 类,这里面的 ConditionalOnBean 条件注解 可加可不加,如果加上就要在使用该启动类的地方 加上?EnableMyStarterConfiguration 注解;

5.其次就是?spring.factories 配置文件,用于配置要?注入?到 spring 容器?的配置类;

6. 再就是 spring-autoconfigure-metadata.properties 配置文件,用于排除一些不必要的配置类注入到?spring容器?中,节省对内存的占用;

7. use-mystarterdemo 模块的结构如下:

?8. 这里主要关注 一下 EnableMyStarterConfiguration 注解,是不是和Springcloud 和Dubbo 的某些注解有点像;

9.测试 在配置类中加入如下配置;


????????在查看Springboot源码时,必然要翻看一下 spring.factories 配置文件,要想知道它的作用,就需要了解一个前提知识点:SPI(Service Provider Interface),有不了解的可以查看一下JDK SPI 和 Springboot SPI的相关知识;这里直接上?自定义starter 的核心代码;

1.创建一个maven 项目,项目结构如下;

2.在父项目中引入相关坐标;

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.4.RELEASE</version>
        <relativePath></relativePath>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

3.创建mystarterdemo 子模块,代码结构如下;

?4. 这里主要代码是??MyStarterAutoConfiguration 类,这里面的 ConditionalOnBean 条件注解 可加可不加,如果加上就要在使用该启动类的地方 加上?EnableMyStarterConfiguration 注解;

@org.springframework.context.annotation.Configuration
@ConditionalOnBean(annotation = EnableMyStarterConfiguration.class)
@EnableConfigurationProperties(MyStarterProperties.class)
public class MyStarterAutoConfiguration {

    private MyStarterProperties myStarterProperties;

    public MyStarterProperties getMyStarterProperties() {
        return myStarterProperties;
    }

    public MyStarterAutoConfiguration(MyStarterProperties myStarterProperties){
        this.myStarterProperties =myStarterProperties;
    }

}

5.其次就是?spring.factories 配置文件,用于配置要?注入?spring 容器?的配置类;

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.demo.mystarter.autoconfigure.MyStarterAutoConfiguration

6. 再就是 spring-autoconfigure-metadata.properties 配置文件,用于排除一些不必要的配置类注入到?spring容器?中,节省对内存的占用

#com.demo.mystarter.autoconfigure.MyStarterAutoConfiguration.ConditionalOnClass=com.demo.mystarter.autoconfigure.EnableMyStarterConfiguration

7. use-mystarterdemo 模块的结构如下:

?8. 这里主要关注 一下 EnableMyStarterConfiguration 注解,是不是和Springcloud 和Dubbo 的某些注解有点像;

@EnableMyStarterConfiguration
@SpringBootApplication
@RestController
public class UserMyStarter {
    @Autowired
    private MyStarterAutoConfiguration myStarterAutoConfiguration;

    public static void main(String[] args) {
        SpringApplication.run(UserMyStarter.class, args);

    }
    @GetMapping("getConfig")
    public String getConfig(){
        MyStarterProperties myStarterProperties = myStarterAutoConfiguration.getMyStarterProperties();
        return "<h1>"+myStarterProperties+"</h1>";
    }
}

9.测试 在配置类中加入如下配置;

mystarter.id=10001
mystarter.name=xiaochen

测试结果:

总结:这个demo写的比较简单,但对 自定义Starter的思路表示清楚了,这里需要关注SPI相关知识,再者就是了解一下 @Import 注解 ,之前我也写过一个关注这个的博客,Springboot中@Import的使用原理_北尘-CSDN博客

但当时只写了其三种用法中的一种;感兴趣的可以看看。

最后 分享一下自定义starter 的源码:粉尘/starterDemo

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:14:58  更:2022-03-08 22:16:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:02:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码