推广 热搜: 公司  快速  中国  上海    未来  企业  政策  教师  系统 

《SpringCloud超级入门》Spring Boot Starter的介绍及使用《七

   日期:2024-12-23     作者:caijiyuan    caijiyuan   评论:0    移动:http://fabua.ksxb.net/mobile/news/4626.html
核心提示:…… 自动配置非常方便,当我们要操作 Mongodb 的时候,只需要引入 spring-boot-starter-data-mongodb 的依赖࿰
  • ……

自动配置非常方便,当我们要操作 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)]

本文地址:http://fabua.ksxb.net/news/4626.html    海之东岸资讯 http://fabua.ksxb.net/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
标签: 配置 一个 自动
 
更多>同类最新资讯
0相关评论

文章列表
相关文章
最新动态
推荐图文
最新资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2023022329号