SpringBoot 配置文件详解(告别XML)

SpringBoot 配置文件详解(告别XML),第1张

快速学会和掌握 SpringBoot 的 核心配置文件的使用。

SpringBoot 提供了丰富的 外部配置 ,常见的有:

其中核心配置文件我们并不陌生,主要以Key-Value的形式进行配置,其中属性Key主要分为两种:

在 applicationproperties 添加配置如下:

① 添加数据源信息

在 applicationpropertis 添加配置如下:

① 添加认证信息,其中 socksindentity 是自定义的属性前缀。

② 添加随机值,其中springtest 是自定义的属性前缀。

使用方法: @ConfigurationProperties(prefix = "springdatasource")

使用说明:提供 Setter方法 和 标记组件 Component

如何验证是否成功读取配置?答:这里可以简单做个验证,注入 MyDataSource ,使用 Debug 模式可以看到如下信息:

使用方法: @Value("springdatasource")

使用说明:提供 Setter方法 和 标记组件 Component

注意事项:@Value不支持注入静态变量,可间接通过Setter注入来实现。

关于两者的简单功能对比:

显然,前者支持松绑定的特性更强大,所以在实际开发中建议使用@ConfigurationProperties来读取自定义属性。

SpringBoot 默认会加载这些路径加载核心配置文件,按优先级从高到低进行排列:具体规则详见 ConfigFileApplicationListener

如果存在多个配置文件,则严格按照优先级进行覆盖,最高者胜出:

举个简单的例子,例如再上述位置都有一个applicationproperties ,并且每个文件都写入了serverport=xx (xx分别是9001,9002,9003,9004),在启动成功之后,最终应用的端口为:9004。图例:

如果想修改默认的加载路径 或者 调改默认的配置文件名,我们可以借助命令行参数进行指定,例如:

YAML是JSON的一个超集,是一种可轻松定义层次结构的数据格式。

答: 因为配置文件这东西,结构化越早接触越规范越好。这里推荐阅读阮一峰老师写的 YAML语言教程 ,写的很简单明了。

引入依赖: 在POM文件引入 snakeyaml 的依赖。

使用说明: 直接在类路径添加 applicationyml 即可。

例如下面这两段配置是完全等价的:

① 在 applicationyml 配置数据源:

② 在 applicationproperties 配置数据源:

项目的实际开发中,我们往往需要根据不同的环境来加载不同的配置文件。例如生产环境,测试环境和开发环境等。此时,我们可以借助 Profiles 来指定加载哪些配置文件。例如:

温馨提示:如果springprofilesactive指定了多个配置文件,则按顺序加载,其中最后的优先级最高,也就是最后的会覆盖前者。

使用方法:

使用Maven插件打包好项目,然后在当前路径,执行DOS命令: java -jar demojar --serverport=8081 ,在控制台可看到应用端口变成了8081。

实现原理:

默认情况下,SpringBoot会将这些命令行参数转化成一个 Property ,并将其添加到 Environment 上下文。

温馨提示:

由于命令行参数优先级非常之高,基本高于所有常见的外部配置,所以使用的时候要谨慎。详见 PropertySource 执行顺序 。

关闭方法:

如果想禁用命令行属性,可以设置如下 *** 作:springApplicationsetAddCommandLineProperties(false)

Spring boot 和 React 运行方式有很多种,现在最常见的是各自运行(非同一端口或不同IP),jar包挂一个端口,React app是nginx上或者tomcat挂的。但是这样运行会出现跨域问题,有时候为了方便调试或者各种各样原因,React项目可以直接丢在Spring boot下运行。

1React项目(我这里是用create-react-app搭建的项目),要扔上jar包,将路由改为HashRouter(一般使用的是BrowserRouter)。这个改的很快,就几秒钟的问题。至于为什么要用HashRouter,因为他是锚点访问,不然BrowserRouter访问方式和jar包挂统一端口,网页访问会被当成请求处理掉。(后台当然可以修改,但是有这个功夫还不如直接丢nginx上,改代理来的更快)

2前端直接 npm build 或 yarn build,找到打包目录,大致如下

3在Spring boot中的resources目录下创建public,大致如下

4直接全部复制到public文件目录下

5运行Spring boot项目,访问端口

6结尾

话说这个remote shell是个人最喜欢的功能,但是在新版本的spring boot 已经移除了对他的支持,很可惜,不过在新版本中也可以自己引入支持。那我们就着眼于眼前,毕竟我们教程中的版本是还没有移除的。这个remote shell是基于 CRaSH ,他可以再应用程序中开启端口,默认是2000,我们可以连进正在运行的程序中,达到监控与维护的目的。比如说,我们希望一个正在运行的程序中,某个Bean通过人为的 *** 作下Destroy或者动态的数据订正之类的,都可以通过这个功能实现。

闲话不多说,我们看下pom

spring-boot-starter-remote-shell 这个模块主要就是将crash引入进来。然后我们在配置文件中定义用户名与密码:

剩下的我们可以使用groovy写一个获取spring 容器中Bean的脚本

这个脚本放置的位置一般情况下放到resources/commands目录下,因为在jar包中定义了脚本扫描的路径。我们就算配置好了,下面我们需要启动项目,启动成功后,打开shell界面,输入

密码我们设置的也是

登录进来后的界面是

进来后输入

进入groovy的 *** 作模式,因为我们是使用groovy写的脚本,只有在这种模式下,脚本才能运行。

返回值

说明我们已经获取到了这个Bean,然后我们可以 *** 作这个Bean里面的方法来完成某些功能。这个真的是非常实用的。大家玩起来吧

下节将的内容是: SpringBoot基础教程(八)——与velocity的结合

本节项目源码

1根据端口号查找当前进程的pid

cmd打开命令窗口

输入命令:netstat -ano|findstr 8094(8094 为端口号)

如图2-01            27488为端口8094对应进程的pid

2根据pid杀掉进程

继续输入命令:taskkill /f /t /pid 27488(27488为进程pid)

3看到  如图2-02  说明就已经成功终止进程。

以上就是关于SpringBoot 配置文件详解(告别XML)全部的内容,包括:SpringBoot 配置文件详解(告别XML)、Spring boot + React 同端口运行、SpringBoot基础教程(七)——与remote shell的结合等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10116962.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存