商务服务
《SpringCloud超级入门》Spring Boot Starter的介绍及使用《七
2024-12-23 09:34
  • ……

自动配置非常方便,当我们要操作 Mongodb 的时候,只需要引入 spring-boot-starter-data-mongodb 的依赖,然后配置 Mongodb 的链接信息 spring.data.mongodb.uri=mongodb://localhost/test 就可以使用 MongoTemplate 来操作数据,MongoTemplate 的初始化工作全部交给 Starter 来完成。

自动配置麻烦的是当出现错误时,排查问题的难度上升了。自动配置的逻辑都在 Spring Boot Starter 中,要想快速定位问题,就必须得了解 Spring Boot Starter 的内部原理。接下来我们自己动手来实现一个 Spring Boot Starter。

Spring Boot Starter项目创建


创建一个项目 spring-boot-starter-demo,pom.xml 配置代码如下所示。

org.springframework.boot

spring-boot-starter-web

org.projectlombok

lombok

true

创建一个配置类,用于在属性文件中配置值,相当于 spring.data.mongo 这种形式,代码如下所示。

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

import lombok.Data;

@Data

@ConfigurationProperties(“spring.user”)

public class UserPorperties {

private String name;

}

再定义一个 Client,相当于 MongoTemplate,里面定一个方法,用于获取配置中的值,代码如下所示。

public class UserClient {

private UserPorperties userPorperties;

public UserClient() {

}

public UserClient(UserPorperties p) {

this.userPorperties = p;

}

public String getName() {

return userPorperties.getName();

}

}

自动创建客户端


一个最基本的 Starter 包定义好了,但目前肯定是不能使用 UserClient,因为我们没有自动构建 UserClient 的实例。接下来开始构建 UserClient,代码如下所示。

@Configuration

@EnableConfigurationProperties(UserPorperties.class)

public class UserAutoConfigure {

@Bean

@ConditionalOnProperty(prefix = “spring.user”, value = “enabled”, havingValue = “true”)

public UserClient userClient(UserPorperties userPorperties) {

return new UserClient(userPorperties);

}

}

Spring Boot 会默认扫描跟启动类平级的包,假如我们的 Starter 跟启动类不在同一个主包下,如何能让 UserAutoConfigure 生效

在 resources 下创建一个 meta-INF 文件夹,然后在 meta-INF 文件夹中创建一个 spring.factories 文件,文件中指定自动配置的类

org.springframework.boot.autoconfigure.EnableAutoConfiguration=

com.cxytiandi.demo.UserAutoConfigure

Spring Boot 启动时会去读取 spring.factories 文件,然后根据配置激活对应的配置类,至此一个简单的 Starter 包就实现了。

使用 Starter


现在可以在其他的项目中引入这个 Starter 包,代码如下所示。

com.cxytiandi

spring-boot-starter-demo

0.0.1-SNAPSHOT

引入之后就直接可以使用 UserClient,UserClient 在项目启动的时候已经自动初始化好,代码如下所示。

@RestController

public class UserController {

@Autowired

private UserClient userClient;

@GetMapping(“/user/name”)

public String getUserName() {

return userClient.getName();

}

}

属性文件中配置 name 的值和开启 UserClient

先自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前

因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

更多笔记分享

更多笔记分享

[外链图片转存中…(img-BtutNZVA-1711464643978)]

    以上就是本篇文章【《SpringCloud超级入门》Spring Boot Starter的介绍及使用《七】的全部内容了,欢迎阅览 ! 文章地址:http://fabua.ksxb.net/news/4626.html 
     文章      相关文章      动态      同类文章      热门文章      栏目首页      网站地图      返回首页 海之东岸资讯移动站 http://fabua.ksxb.net/mobile/ , 查看更多   
最新文章
苹果手机充不进电是什么原因手机充不上电是什么原因「苹果手机充不进电是什么原因」
随着智能手机的普及,苹果手机凭借其卓越的性能和独特的生态系统,赢得了众多用户的青睐。然而,在使用过程中,有时会遇到手机无
高考考场分布图来了!还要注意这些……手机带「高考考场分布图来了!还要注意这些……」
山东省2023年夏季高考和高中学业水平等级考试(以下统称“夏季高考”)将于6月7—10日举行,考试临近,有哪些事需要注意?让我们
荣耀X50i+和荣耀X50i配置对比详解,哪款更值得入手?手机配置对比「荣耀X50i+和荣耀X50i配置对比详解,哪款更值得入手?」
今年各大国产千元手机都卷起来了,有越来越多的越级配置来到了千元手机市场,吸引了许多网友的关注。继荣耀X50i之后,荣耀官方在
云电脑教程:怎么用云电脑手机玩游戏?手机云电脑「云电脑教程:怎么用云电脑手机玩游戏?」
游戏已经成为刚需,不少游戏都开始在手机上玩,即使没出手游也是可以同步进行,和小极来了解手机玩游戏教程。首先,在手机上下载
至尊贵族奢华 诺基亚8800A奢华6300元诺基亚8800手机「至尊贵族奢华 诺基亚8800A奢华6300元」
2011年4月12日, 诺基亚 8800A (行货)在给出了6300元的报价,这个 价格 相比前一段时间大降200元。该机为行货版本,其配件包括
手机卡丢了怎么办电信卡不用了呢怎么注销电信手机卡怎么注销「手机卡丢了怎么办电信卡不用了呢怎么注销」
大家好,关于手机卡丢了怎么办电信卡不用了呢怎么注销很多朋友都还不太明白,今天小编就来为大家分享关于电信卡丢了怎么销号的知
华为matex使用的是什么系统?华为手机是什么系统「华为matex使用的是什么系统?」
大家都知道,在华为matex未发布之前,不少人都以为它会采用华为自研的鸿蒙系统,但这种说法被否定了,首款鸿蒙手机可能是明年3月
小米6手机通话录音在哪里?小米手机通话录音在哪里找「小米6手机通话录音在哪里?」
小米手机录音功能具体操作步骤:1、按电话图标进入电话界面2、按菜单键打开菜单,找到右下角设置图标3、点击设置图标,进入设置
华为手机adb驱动工具华为手机adb驱动工具v1.3 官方华为手机驱动「华为手机adb驱动工具华为手机adb驱动工具v1.3 官方」
华为手机adb驱动工具专门用于华为安卓手机,安装本驱动后才能连接电脑与手机进行各种操作,可以解锁手机。软件操作简单,打开后