Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring引导中的外部配置和一次性测试_Java_Spring_Properties_Spring Boot - Fatal编程技术网

Java Spring引导中的外部配置和一次性测试

Java Spring引导中的外部配置和一次性测试,java,spring,properties,spring-boot,Java,Spring,Properties,Spring Boot,Spring boot具有配置功能,这意味着您可以在不同的环境中使用相同的应用程序代码 您可以在jar中绑定application.properties,该jar提供 一个合理的默认名称。在生产中运行时 可以在jar之外提供application.properties 覆盖名称;对于一次性测试,您可以使用 特定命令行开关: 一次性测试实际上意味着什么 如何在不同的环境中使用相同的应用程序代码 一次性测试 我发现,通常在Spring引导的环境中,所提到的“一次性测试”倾向于切换活动配置文件。例如,

Spring boot具有配置功能,这意味着
您可以在不同的环境中使用相同的应用程序代码

您可以在jar中绑定application.properties,该jar提供 一个合理的默认名称。在生产中运行时 可以在jar之外提供application.properties 覆盖名称;对于一次性测试,您可以使用 特定命令行开关:

  • 一次性测试实际上意味着什么
  • 如何在不同的环境中使用相同的应用程序代码

  • 一次性测试

    我发现,通常在Spring引导的环境中,所提到的“一次性测试”倾向于切换活动配置文件。例如,当我在本地运行应用程序时,我通常使用以下命令:

    java -jar myapp.jar --spring.profiles.active=scratch
    
    这激活了我的“scratch”配置文件,它建立了一个内存中的数据库,并将一些基本测试数据导入其中。我有一个小的
    run.sh
    脚本,我把它签入Git,其中包括了这个脚本

    这就是我在本地机器上玩时要激活的配置文件。但是,对于偶尔的一次性测试,我可能希望在一个更永久的数据库上运行我的应用程序。要做到这一点,我只需要调整我的命令行中的活动配置文件,就像这样

    java -jar myapp.jar --spring.profiles.active=sqlserver
    
    myapp/
        config/
            application.properties
        myapp.jar
    
    这将激活my config目录中的
    应用程序sqlserver.properties
    文件,并设置由SQL Server数据库支持的本地运行的Spring引导应用程序。这是一次性的,因为我不打算将其用作默认的构建数据库连接

    在不同环境中运行相同的应用程序代码

    这为在不同环境中使用“相同的应用程序代码”提供了基础。假设您已经构建了一个示例Spring引导应用程序,您应该注意到该构建创建了一个

    .jar
    文件。其思想是将相同的
    .jar
    文件部署到所有环境中。这是一件好事,因为如果您已经在一个环境中测试了您的应用程序,并且希望升级到生产环境,那么您肯定希望确信您正在部署的代码与刚才测试的代码相同吗

    但是,很明显,您的每个环境都有不同的需求。在构建时,您可能希望使用内存中的数据库。但是,在集成测试环境中,您可能需要连接到物理数据库,如MySQL、Oracle或SQL Server。您可能有单独的测试和生产数据库。每个环境可以连接到不同的RabbitMQ集群

    Spring Boot通过外部化配置来支持这一点。它将自动在应用程序根目录中名为
    config
    的目录中查找属性。i、 你可以像这样创建一个目录结构

    java -jar myapp.jar --spring.profiles.active=sqlserver
    
    myapp/
        config/
            application.properties
        myapp.jar
    
    。。。每个环境中唯一需要不同的是
    application.properties
    ,在这里,您可以指向不同的数据库、LDAP目录、电子邮件系统、消息代理或每个环境中不同的其他内容

    --name
    参数

    如中所述,以
    --
    开头的命令行参数将转换为应用程序属性。因此,
    --name
    成为您可以在应用程序中访问的属性。值得注意的是,它不是启动Spring引导应用程序所必需的参数


    作为旁注,
    --name
    在启动“NIX命令行”进程时非常常用,这样您就可以
    ps ax | grep Spring
    并查看您的进程。通常这样你就可以杀了它。这不是Spring Boot应用程序所必需的参数,而只是您提到的示例中使用的参数。该示例通过
    @Value(${name}”)
    注释引用它。

    一次性测试

    我发现,通常在Spring引导的环境中,所提到的“一次性测试”倾向于切换活动配置文件。例如,当我在本地运行应用程序时,我通常使用以下命令:

    java -jar myapp.jar --spring.profiles.active=scratch
    
    这激活了我的“scratch”配置文件,它建立了一个内存中的数据库,并将一些基本测试数据导入其中。我有一个小的
    run.sh
    脚本,我把它签入Git,其中包括了这个脚本

    这就是我在本地机器上玩时要激活的配置文件。但是,对于偶尔的一次性测试,我可能希望在一个更永久的数据库上运行我的应用程序。要做到这一点,我只需要调整我的命令行中的活动配置文件,就像这样

    java -jar myapp.jar --spring.profiles.active=sqlserver
    
    myapp/
        config/
            application.properties
        myapp.jar
    
    这将激活my config目录中的
    应用程序sqlserver.properties
    文件,并设置由SQL Server数据库支持的本地运行的Spring引导应用程序。这是一次性的,因为我不打算将其用作默认的构建数据库连接

    在不同环境中运行相同的应用程序代码

    这为在不同环境中使用“相同的应用程序代码”提供了基础。假设您已经构建了一个示例Spring引导应用程序,您应该注意到该构建创建了一个

    .jar
    文件。其思想是将相同的
    .jar
    文件部署到所有环境中。这是一件好事
    ,因为如果您已经在一个环境中测试了您的应用程序,并且希望升级到生产环境,那么您肯定希望确信您正在部署的代码与刚才测试的代码相同吗

    但是,很明显,您的每个环境都有不同的需求。在构建时,您可能希望使用内存中的数据库。然而,在您的集成测试环境中,您可能需要连接到一个物理数据库,如MySQL、OracleO