欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

荐 【JavaWeb】springboot第二特性:Starter启动依赖

程序员文章站 2022-07-03 18:07:29
文章目录一、前言二、自己动手写一个Starter组件2.1 新建组件类2.2 配置类和配置属性类2.3 完成统一格式,resources目录三、使用者3.1 新建使用者类3.2 使用者导入依赖3.3 使用者HelloController.java3.4 使用者application.properties配置文件要配置好四、启动redis,运行成功4.1 直接用windows 上安装使用redis4.2 操作成功4.3 使用者application.properties没有提示如何解决?4.4 整个组件的方方...

一、前言

在springboot中,starter组将的启动依赖是基于自动装配的,所有承接自动装配,这一篇博客讲解starter启动依赖,自己动手写一个starter组件。

例如常见的Redis,提供两种客户端jedis 和 Lettuce,查看RedisAutoConfiguration.class就可以知道
荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

我们来基于Redisson自己写一个redis客户端组件。

二、自己动手写一个Starter组件

2.1 新建组件类

新建一个maven quickstart myredis-spring-boot-starter组件

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

导入spring-boot-starter依赖(不是spring-boot-starter-web依赖,现在开发第三方组件,不是开发项目)和redission依赖

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

金手指:这里使用<scope>true</scope>是阻止传递依赖,避免冲突,就是使用方使用你这个第三方组件的时候,这个第三方组件中使用的依赖不会传递的引入到使用方,避免使用方重复引入,这是开发第三方组件的风格。

2.2 配置类和配置属性类

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

2.3 完成统一格式,resources目录

金手指:
1、resources目录的创建:先make directory,再次make Directory as / Resources Root
2、META-INF目录和spring.factories分开创建,先在resouces下创建META-INF目录,然后在MATA-INF目录下创建spring.factories文件

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

starter组件 Lifecycle maven clean and maven install 被使用者使用

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

金手指:这里要删除true,否则即使maven install成功,使用者也找不到RedissonClient等相关的。
这个第三方组件的quickstart工程,自带的App.java没用,删去,这里删去了。

三、使用者

3.1 新建使用者类

新建一个springboot项目,直接使用http://start.aliyun.com/(阿里提供,注意是http,不要用https)

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

构建好了

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

金手指:
使用maven构建项目的时候,pom.xml中的springboot中的依赖的artifactId有两种,包括
spring-boot-starter前缀为官方包 基于条件控制bean的装载,例如:spring-boot-starter-web
spring-boot-starter后缀为非官方包,第三方包,使用第三方提供的spring.factories文件控制bean的装载,例如:mybatis-spring-boot-starter
spriing-boot-starter作前缀还是后缀,这是一个约定。

3.2 使用者导入依赖

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

3.3 使用者HelloController.java

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

金手指:
Bucket 是字符串的操作 。

金手指:
荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖
idea左边可以快速查找依赖,无需快捷键,选中左边任意一个文件,直接输入即可查找。

3.4 使用者application.properties配置文件要配置好

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖
荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

四、启动redis,运行成功

4.1 直接用windows 上安装使用redis

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

4.2 操作成功

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖
荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

不知道为什么?
使用者application.properties文件中,csdn.myredis.host=localhost启动成功,csdn.myredis.host=192.168.43.26(本机局域网IP) 启动失败.

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

因为是被序列化过的,所以为"\x04>\bcsdn.com",多了一个前缀。

4.3 使用者application.properties没有提示如何解决?

解决方式:分两步走,导入依赖+配置文件

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

然后,META-INF中添加文件additional-spring-configuration-metadata.json

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

实际上,任意一个springboot工程中,都有这个文件的,additional-spring-configuration-metadata.json,随便就可以找到荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

实际上,使用者工程中,可以看到两个additional-spring-configuration-metadata.json 和 spring-configuration-metadata.json

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

4.4 整个组件的方方面面

在使用方,可以看到整个组件的方方面面,如下:

荐
                                                        【JavaWeb】springboot第二特性:Starter启动依赖

五、小结

starter组件开发、自动装配原理结束。

天天打码,天天进步!!!

使用者工程代码:https://download.csdn.net/download/qq_36963950/12599055
自定义组件工程代码:https://download.csdn.net/download/qq_36963950/12599053

本文地址:https://blog.csdn.net/qq_36963950/article/details/107271150