>>分享流行的Java框架以及开源软件,对孙卫琴的《精通Spring:Java Web开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 19962 个阅读者 刷新本主题
 * 贴子主题:  网红框架SpringBoot2.x之定制参数浅析 回复文章 点赞(0)  收藏  
作者:Jacky    发表时间:2020-03-11 14:55:45     消息  查看  搜索  好友  邮件  复制  引用

  
我们都知道,SpringBoot框架最吸引人的地方之一就是他针对各种框架组件集成都提供了缺省的配置,“零配置”集成和开发是它的终极目标。理论上你不做任何特殊配置,都可以启动项目。

     如果你用SpringBoot用于web项目开发,那么他就已经内嵌了web容器,无需你单独部署到tomcat或者jetty等容器中,打包成jar包即可运行,省去了反锁的打包部署流程。默认情况下,由SpringBoot启动的web项目,默认端口是8080,这也是tomcat或jetty的默认端口。那么问题来了,我要改端口怎么办,这是必然会遇到的问题。

     还记得运行SpringBoot项目时,需要编写的main方法吗,当时的代码是这样的:    
@SpringBootApplication
public class Application {
    public static void main(String[] args){
        SpringApplication.run(Application.class, args);
    }
}

  注意,这是一个main方法,动态传入启动参数,这跟普通运行一个java程序没什么区别。args就是他的启动参数,它是一个数组,可以带一个或多个参数。
那这个参数是用来做什么的?既然springboot默认做好了大部分的配置,那么要修改这些配置,就是通过传入main方法执行的参数将覆盖框架自动为你做好的配置。

     比如,你可以用如下的类似代码,来修改你启动项目的端口:    

java -jar xxx.jar --server.port=8888

  再比如,你可以如下的类似代码,来修改你启动的项目在控制台输出的logo,    

java -jar xxx.jar --spring.banner.location=classpath:banner.txt

  最终的效果也就是把启动时,你经常看到的这个
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
替换成了这个:
点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
诸如此类,还可以定制其他很多默认设置,当然有些需要在pom文件中添加相应的模块依赖,才能使用相应的功能。比如你用到了redis,那么你需要添加
spring-boot-starter-data-redis来把redis的默认设置先加载进来,在这基础上,你就可以编写定制参数,比如:    

java -jar xxx.jar --spring.redis.port=6379

  注意,命令的格式是:    

#参数需要跟在jar包名称之后以--开头
java -jar xxx.jar --参数名=参数值  

  你也可以在运行时,同时添加多个定制参数(以空格隔开),比如把上述几个例子合并起来就是:    

java -jar xxx.jar --server.port=8888 --spring.banner.location=classpath:banner.txt --spring.redis.port=6379

  理论上,能支持定制的参数,都可以添加。

     附带说一句,用IDEA或者Myeclipse这样的IDE帮你运行项目的时候,其原理也是如此。

     那么,现在就有两个问题出现了。

     1、我怎么知道springboot支持哪些定制参数?

     2、这么多参数,都写到运行命令上吗?那样岂不是会显得很臃肿,貌似一点都不优雅?

     这两个问题,留到下次再谈。



----------------------------
原文链接:https://blog.51cto.com/1241490/2475537

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-03-14 10:12:40 重新编辑]
  Java面向对象编程-->集合(下)
  JavaWeb开发-->使用Session(Ⅱ)
  JSP与Hibernate开发-->映射对象标识符
  Java网络编程-->客户端协议处理框架
  精通Spring-->通过Vuex进行状态管理
  Vue3开发-->绑定CSS样式
  一篇文章让你彻底了解什么叫Netty!
  RocketMQ 常用消息类型
  面试官问什么是Spring循环依赖,该如何回答?
  微服务架构模型
  Spring API中JAVA反射—工具类ReflectionUtils
  在Spring MVC中配置线程池,进行异步请求处理
  SpringMVC 中 @ControllerAdvice 注解的三种使用场景!
  拦截器不拦截静态资源的三种处理方法
  Spring数据验证 中@NotNull, @NotEmpty和@NotBlank之间的区别
  Nginx安装及配置
  RabbitMQ的用途、原理以及配置
  Spring+JPA+ehcache开启二级本地缓存
  支付结算系统如何应对高并发、热点账户等问题
  微架构 springcloud-07. springboot-静态资源处理
  Axis、Axis2和CXF比较
  更多...
 IPIP: 已设置保密
楼主      
该用户目前不在线 nihaota 
  
威望: 0
级别: 新手上路
魅力: 1315
经验: 1315
现金: 2944
发文章数: 243
注册时间: 0001-01-01
 消息  查看  搜索  好友  邮件  复制  引用


讨债公司
发文章时间 2022-10-28 19:54:14
 IPIP: 已设置保密 1 楼     
1页 1条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。