为什么springboot设置默认参数Springboot.setDefaultProperties(map)不生效

这篇文章主要讲解了为什么springboot设置默认参数Springboot.setDefaultProperties(map)不生效,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

我们都知道springboot 由于内置tomcat(中间件)直接用启动类就可以启动了。
而且我们有时想代码给程序设置一些默认参数,所以使用方法Springboot.setDefaultProperties(map)

SpringApplication application = new SpringApplication(startClass);
//
Map<String, Object> params = new HashMap<>();
params.put("lai.ws.test","test");
application.setDefaultProperties(params);
ApplicationContext context = application.run(startClass,args);

于是启动后发现 lai.ws.test 居然是null,也就是参数设置不成功,百思不得其解。为此还断点进入SpringApplication 的源码里。最后发现以下源码

  /**
   * Static helper that can be used to run a {@link SpringApplication} from the
   * specified sources using default settings and user supplied arguments.
   * @param primarySources the primary sources to load
   * @param args the application arguments (usually passed from a Java main method)
   * @return the running {@link ApplicationContext}
   */
  public static ConfigurableApplicationContext run(Class<&#63;>[] primarySources,
      String[] args) {
    return new SpringApplication(primarySources).run(args);
  }

各位,发现了没,又new 了一个SpringApplication。到此,问题答案找到了。
如果启动类要设置默认参数,不用使用以下方法去启动

ApplicationContext context = application.run(startClass,args);

应该使用以下

ApplicationContext context = application.run(args);

看完上述内容,是不是对为什么springboot设置默认参数Springboot.setDefaultProperties(map)不生效有进一步的了解,如果还想学习更多内容,欢迎关注行业资讯频道。