商务服务
《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/ , 查看更多   
最新文章
美股市场波动加剧,经济前景不确定性推升油价金价
近期,美股市场波动显著,三大指数涨跌不一,道指上涨1%,标普500指数微涨0.55%,而纳指则下跌0.14%。与此同时,国际油价和金价
苹果手机如何设置路由器用手机怎么重新设置路由器「苹果手机如何设置路由器」
苹果手机与路由器的连接和设置过程相对简单,只要按照以下步骤进行操作即可完成。首先,确保苹果手机和路由器都处于开启状态。打
苹果手机没电关机怎么开机苹果手机怎样关机和开机「苹果手机没电关机怎么开机」
1、使用直接电源充电。手机没电自动关机后开不了机,这时候不要着急,手机没有坏只是因为电量都跑掉了所以打开不了。这时候补电
手机温度计测室内温度手机怎么测室内温度「手机温度计测室内温度」
74a的腰围是2尺2。74a是指下装的尺码,意思腰围为74厘米,a代表标准型,因为1尺≈33.33厘米,所以74厘米约等于2尺2。腰围尺寸乘
创维电视遥控器(智控中心)格力手机遥控器下载「创维电视遥控器(智控中心)」
智控中心app是针对创维智能电视研发的一款智能控制软件,通过手机客户端实现实现对电视机的盲操作,这样就可以把手机里面的图片
全键盘塞班Anna手机 诺基亚E6到货!塞班手机「全键盘塞班Anna手机 诺基亚E6到货!」
  【PConline香港站 行情】诺基亚E系列一直是商务手机的经典,诺基亚厚积薄发推出了E系列的接班人,一款全新的全键盘且支持触
vivoX FoId3:是手机,更胜手机一筹。vivo是国产手机吗「vivoX FoId3:是手机,更胜手机一筹。」
轻薄,奢华,既有手机所有优势,又涵盖手机不具备的优势。这就是vivoX FoId3.手机里的“劳斯莱斯”。 值得一提的是,蓝厂这款大
机圈大事件!vivo的影像新蓝图暨X系列新品发布会定于2024年5月13日19:00举行vivo新款手机即将上市「机圈大事件!vivo的影像新蓝图暨X系列新品发布会定于2024年5月13日19:00举
vivo的影像新蓝图暨X系列新品发布会定于2024年5月13日19:00举行,届时将发布vivo自研影像品牌以及vivo X100s、vivo X100s Pro、v
当心漂亮的手机外壳危害你的健康漂亮的手机壳「当心漂亮的手机外壳危害你的健康」
哈尔滨医科大学附属第四医院岳金凤本报讯目前,手机外壳几乎是每一部手机的标配,卡通的、镶钻的……又能抗摔,颜值又高,很是吸