Spring Boot 之spring.factories

首先抛出一个问题:如果想要被Spring容器管理的Bean的路径不再Spring Boot 的包扫描路径下,怎么办呢?也就是如何去加载第三方的Bean 呢?

有两种方式可以解决:
这里我们使用Swagger的配置来做实验。
1:首先一个Swagger的配置类:SwaggerConfig
SwaggerConfig 代码:

@Configuration
@EnableSwagger2
public class SwaggerConfig implements EnvironmentAware {private static final Logger log = LoggerFactory.getLogger(SwaggerConfig.class);@Autowiredprivate Environment env;@Value("${swagger.scan.package}")private String swaggerScanPackage;public SwaggerConfig() {}@Beanpublic Docket createRestApi() {Predicate<String> path = PathSelectors.any();if (Arrays.asList(this.env.getActiveProfiles()).contains("prod")) {path = PathSelectors.none();}log.info("####初始化createRestApi####swaggerScanPackage:" + this.swaggerScanPackage);log.info(path.toString());return (new Docket(DocumentationType.SWAGGER_2)).apiInfo(this.apiInfo()).select().apis(RequestHandlerSelectors.basePackage(this.swaggerScanPackage)).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {log.info("##################################初始化API信息################################################");return (new ApiInfoBuilder()).title("APIs").description("…………").termsOfServiceUrl("https://js.dazhi.loan.com").version("1.0").build();}@Overridepublic void setEnvironment(Environment environment) {}
}

2:再看我的工程结构吧:
Spring Boot 之spring.factories_spring.factories
发现我的SwaggerConfig 类和 SpringBoot 的启动类ConfigApplication.java 不在同一级目录下,所以当Spring Boot 自动扫描包的时候,是扫描不到我的SwaggerConfig 的配置的,也就在控制台没有Swagger的打印的信息:

Spring Boot 之spring.factories_加载第三方类_02

所以这时候我如果想要把SwaggerConfig 加载到Spring容器中的话 要怎么办呢?下面介绍两种方式
①:在Spring Boot Application 主类上 使用@Import 注解
Spring Boot 之spring.factories_加载第三方类_03

启动就可以看到Swagger的基础信息:
Spring Boot 之spring.factories_加载第三方类_04

②:现在我们将其改造一下,采用spring.factories 的方式去加载SwaggerConfig类,在resources目录下新建一个META-INF 的目录,然后在
新建一个spring.factories 的文件,里面的内容为:

登录后复制

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.sg.config.SwaggerConfig

然后在把Spring Boot 启动类上的@Import注释掉,启动发现也可以把SwaggerConfig加载到Spring 容器中
Spring Boot 之spring.factories_加载第三方类_05

到这就完成了加载一个Spring 不能扫描到的一个类,他可以是第三方的,也可以是自己写的,只要是Spring Boot 默认扫描路径不能够扫描到,都可以使用这种方式去加载!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556330.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dataearth可视域分析_谁不知道前期分析要用ARCGIS?我就是不会用啊

Q你有没有遇到这样的情况&#xff1f;身边的同事或同学经常说什么高程图、坡向图、坡度图、生态水文图、热力密度图、大数据算法&#xff0c;而自己却一无所知&#xff0c;心里感到特别的慌啊。文末附ArcGIS最新版及超强数据神器 很多人会说&#xff0c;“设计师是感性的&#…

android预加载app,Android欢迎页预加载首页数据

项目需求&#xff1a;展示欢迎页的同时执行token登录和首页预加载背景&#xff1a;在此之前&#xff0c;展示欢迎页和token登录等网络操作是串行的&#xff0c;所以用户点开App到最终看到首页的时间就是&#xff1a;"展示欢迎页的时间""登录时间""请求…

@ImportResource()注解的使用

ImportResource注解用于导入Spring的配置文件&#xff0c;让配置文件里面的内容生效&#xff1b;(就是以前写的springmvc.xml、applicationContext.xml) Spring Boot里面没有Spring的配置文件&#xff0c;我们自己编写的配置文件&#xff0c;也不能自动识别&#xff1b; 想让Sp…

mybatis3 没有生成example_网站图片尺寸自动生成

目录1. 背景2. 实现思路2.1. 尺寸动态变化2.2. 实时裁剪并静态化3. web或代理服务器插件实现方案1. 背景某天我的前同事给我打电话&#xff0c;说他们的负载很高&#xff0c;经查发现网站首页有20M&#xff0c;原因是首页直接引用高清图片&#xff0c;没有安装分辨率生成缩图。…

无法删除所有指定的值_AutoCAD所有系统变量大全

ACADLSPASDOC 0 仅将 acad.lsp 加载到 AutoCAD 任务打开的第一个图形中; 1 将 acad.lsp 加载到每一个打开的图形中ACADPREFIX 存储由 ACAD 环境变量指定的目录路径(如果有的话)&#xff0c;如果需要则附加路径分隔符ACADVER 存储 AutoCAD 的版本号。这个变量与 DXF 文件标题变量…

Shiro过滤器配置(ShiroFilterFactoryBean)

这篇博客就是记录一下shiro过滤器的配置和一些注意事项 /*** Shiro过滤器配置*/Bean(name "shiroFilter")public ShiroFilterFactoryBean shiroFilter() {ShiroFilterFactoryBean shiroFilter new ShiroFilterFactoryBean();// Shiro的核心安全接口,这个属性是必须…

简述HTML语言概念,HTML语言的基本概念和基本格式.doc

HTML语言的基本概念和基本格式HTML语言的基本概念和基本格式当使用Netscape Navigator 与 Interne Explorer 这些浏览器在Interent上尽情遨游的时候&#xff0c;肯定会被丰富多彩的屏幕内容所吸引&#xff0c;而这些丰富多彩的内容背后&#xff0c;只是用一种简单的超文本标志语…

为什么线程池里的方法会执行两次_新手一看就懂的线程池

作者:码农田小齐来源:https://www.cnblogs.com/nycsde/p/14003888.html那相信大家也能感受到&#xff0c;其实用多线程是很麻烦的&#xff0c;包括线程的创建、销毁和调度等等&#xff0c;而且我们平时工作时好像也并没有这样来 new 一个线程&#xff0c;其实是因为很多框架的底…

vue学习笔记(超详细)

文章目录一. Vue基础认识Vue.jsVue安装方式Vue的MVVM二. Vue基础语法生命周期模板语法创建Vue, options可以放什么语法综合v-onv-for遍历数组v-model表单绑定v-model结合radio类型使用v-model结合checkbox类型使用v-model结合select类型使用值绑定修饰符检测数组更新计算属性 c…

华为鸿蒙热水器,美的华为跨界联合!搭载鸿蒙OS的美的产品双11上市

【宅秘新闻】在前段时间的华为开发者大会上&#xff0c;华为正式发布了鸿蒙OS 2.0。华为消费者业务软件部总裁王成录当时表示&#xff0c;美的等家电品牌很快就会推出基于鸿蒙OS 2.0的家电产品。11月11日&#xff0c;美的集团官方宣布搭载鸿蒙OS的美的产品在双十一惊喜上市。宅…

跳一跳python_微信跳一跳python怎么刷分?跳一跳python怎么使用?

最近&#xff0c;微信跳一跳小游戏可以说是火爆了微信好友圈&#xff0c;网上流传了Github大神分享的一个针对该游戏的开源项目&#xff0c;也就是一个Python脚本程序可以刷很高的分&#xff0c;下面就为大家带来跳一跳python使用教程。微信跳一跳python怎么刷分&#xff1f;微…

Eclipse构建Maven分包分模块项目并构建服务端

首先说一下Maven 模块结构&#xff1a; 一个简单的Maven模块结构是这样的&#xff1a; ---- app-parent 一个父项目(app-parent)聚合很多子项目(app-util,app-dao,app-service,app-web) |---- pom.xml (pom) | |-------- app-util | |-------- pom.xml (jar) | |-------- app-…

我们一起动手学大模型应用开发

大模型正逐步成为信息世界的新革命力量&#xff0c;其通过强大的自然语言理解、自然语言生成能力&#xff0c;为开发者提供了新的、更强大的应用开发选择。 随着国内外井喷式的大模型 API 服务开放&#xff0c;如何基于大模型 API 快速、便捷地开发具备更强能力、集成大模型的…

登陆页面html5代码qq,HTML5QQ登录的一篇代码分享

html5背景*{margin:0;padding:0;list-style-type:none;}a,img{border:0;}$(function () {if (!window.ActiveXObject && !!document.createElement("canvas").getContext) {$.getScript("http://im-img.qq.com/pcqq/js/200/cav.js?_1428576021379"…

unity 多台 显示器 控制_飞利浦292E2E评测丨宽屏显示器中的多面手

■本文来自中关村在线屏幕比例21:9或32:9的显示器&#xff0c;因为横向屏幕很长&#xff0c;所以被人形象的称为带鱼屏。相较于16:9的显示器&#xff0c;屏幕拥有更多显示面积&#xff0c;我们能获得更多信息&#xff0c;大大提升办公效率。同时带鱼屏打游戏和看电影时也能获得…

html 表格行排序,用客户端HTML表格排序对行进行分组

可用于逻辑上(不一定是语义上)可用的唯一元素是将相关的行分组在一起的是&#xff0c;因为它有效地具有多个元素。但是&#xff0c;由于实现tablesorter的方式&#xff0c;这在这种情况下不会有任何帮助。我可以看到在的tablesorter源代码一个未记录的配置选项 - appender - 这…

Idea 创建简单的SpringBoot 父子项目

背景 使用Idea 创建一个模块化的SpringBoot项目&#xff0c;但是发现Idea 创建父子项目的方式较Eclipse 较为不同&#xff0c;且Idea 创建的过程较Eclipse创建父子项目的过程复杂。 Eclipse 创建SpringBoot父子项目传送门 网上虽然有Idea创建SpringBoot父子项目&#xff0c;但…

python曲线拟合预测_用python做曲线拟合

大家好&#xff1f;我是Kepler哎学习&#xff0c;最近在工程中用到曲线拟合。一般我们都是用matlab来做&#xff0c;方便快捷。我们也可以尝试用python编写脚本来拟合数据&#xff0c;方便数据自动化处理。曲线拟合分为一般多项式拟合和指定函数拟合。准备工作&#xff1a;1.建…

微服务架构与SpringCloud

微服务架构简述 通常而言&#xff0c;微服务架构是一种架构模式或者说是一种架构风格&#xff0c;它提倡将单一应用程序划分成一组小的服务&#xff0c;每个服务运行在其独立的自己的进程中&#xff0c;服务之间互相协调、互相配合为用户提供最终价值。服务之间采用轻量级的通…

应用商店应用计算机,基于中国虹计算机的应用商店的设计与实现

摘要&#xff1a;随着互联网的不断发展,第三方应用商店的活跃用户数已达到数亿规模,而且仍然在不断增长,同时各终端厂商也陆续推出了适用于自家终端的应用商店.中国虹计划课题项目经过多年发展,其核心载体中国虹计算机也得到了大量的推广使用,但是中国虹计算机现有的云桌面应用…