快速学会和掌握 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的结合等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)