SpringBoot入门学习(四)~~ SpringBoot的参数设置

目录

SpringBoot的参数设置

一、Spring注入参数的介绍 ~ ~

       第一种方式(命令行参数):ApplicationArgument对象注入参数

     第二种方式(配置文件):application*.properties

二、Spring提供方面的properties绑定机制

三、扩展知识~


SpringBoot的参数设置

SpringBoot在应用启动过程中,可以通过启动参数给应用传递一些额外的参数来控制应用的运行。接下来介绍这种参数设置的集中方式。

  • 一、Spring注入参数的介绍 ~ ~

根据配置的优先级进行排序如下,如果有相同的配置,高优先级的会覆盖掉低优先级的。

  1. 命令行参数。
  2. ServletCoinfg和ServletContext。
  3. 操作系统环境变量。
  4. application-{profile}.properties或者YAML文件。
  5. application. properties或者YAML文件。

       第一种方式(命令行参数):ApplicationArgument对象注入参数

  1. 在main方法中可以直接使用注入的参数。Main方法有个args的参数。
  2. 可以在任何类中,直接通过@Autowired的方式注入一个ApplicationArgument对象,通过对象的方法来使用注入参数。

@Controller
public class HelloController {
  
@Autowired
  
private ApplicationArguments applicationArguments;

  
@RequestMapping("/hello")
  
@ResponseBody
  
public String hello(){
      System.
out.println(applicationArguments.getNonOptionArgs());
     
return "hello";
   }
}

    3.  直接启动项目访问会看到:输入为空

SpringBoot入门学习(四)~~ SpringBoot的参数设置_第1张图片

    4.这时候我们可以在启动配置里面,配置参数如下:

author=xiaozheng

SpringBoot入门学习(四)~~ SpringBoot的参数设置_第2张图片

 

重启项目,再次访问可以看到如下:说明参数确实已经注入了。我们也获取到参数。

SpringBoot入门学习(四)~~ SpringBoot的参数设置_第3张图片

【扩展:】通过jar方式给项目注入参数

java -jar demo-0.0.1-SNAPSHOT.jar username=root password=123456789

 

     第二种方式(配置文件):application*.properties

其他ServletConfig或系统环境变量就不讲,很少通过这种方式去配置SpringBoot,接下来重点讲 配置文件的方式,这种也是最常见的方式。

  1. 在java同级目录建:resource文件夹,并且将文件夹指定为Sources Root
  2. 创建application.properties即可。可以看到文件前面有个“小绿叶”表示成功
  3. 输入server.port=8070,重新启动项目

SpringBoot入门学习(四)~~ SpringBoot的参数设置_第4张图片

SpringBoot入门学习(四)~~ SpringBoot的参数设置_第5张图片

可以看到项目的启动端口已经修改为:8070,表示配置成功。这里的话,不需要了解application.properties里面的详细配置,后面会整理出来,统一分享。

SpringBoot入门学习(四)~~ SpringBoot的参数设置_第6张图片

 

 

  • 二、Spring提供方面的properties绑定机制

  1. 默认从application.properties中加载配置。
  2. 资源文件(application.properties)加载顺序:
    1. 当前目录/config子目录。
    2. 当前目录。
    3. classpath下的config目录。
    4. classpath目录。

优先级从上到下,如果有相同配置的话,会覆盖。

做个小实验,分别在上面的四个位置新建一个application.properties配置文件

  1. -> 7000
  2. -> 7001
  3. -> 7002
  4. –>7003

启动项目,它的端口时候7000。说明a)配置优先级最高。

在d)添加下面配置:server.context-path=/test

发现需要:http://localhost:7000/test/hello

才能访问到原来的控制器。说明配置是叠加的。

删除a)配置文件,启动项目,端口为:7001

删除b)配置文件,启动项目,端口为:7002

删除c)配置文件,启动项目,端口为:7003

 

上述实验,证明了配置文件加载的优先级问题。其实在一般的项目中,配置文件都是在d的目录,在比较大的项目中,有多数据源,就会采用多数据源配置,上述优先级就用到了。

 

  • 三、扩展知识~

我们可以通过命令行参数配置的方式去更改配置文件的名字

Spring.config.name:文件名称

做个小实验:

       如果说,我将配置文件改名为:xiaozheng.properties

SpringBoot入门学习(四)~~ SpringBoot的参数设置_第7张图片

启动项目:显示8080端口,说明该配置文件没有被加载到。

SpringBoot入门学习(四)~~ SpringBoot的参数设置_第8张图片

 

利用第一种方式,使用命令行对下面的参数进行设置

java -jar demo-0.0.1-SNAPSHOT.jar --spring.config.name=xiaozheng

注意这里不需要加:properties

“ ——“ 表示命令行。

SpringBoot入门学习(四)~~ SpringBoot的参数设置_第9张图片

 

 

或者是在:IDEA中

SpringBoot入门学习(四)~~ SpringBoot的参数设置_第10张图片

也是可以的。

你可能感兴趣的:(SpringBoot基础+应用)