Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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
如何在windows上正确使用Spring配置文件_Spring_Spring Boot_Spring Profiles - Fatal编程技术网

如何在windows上正确使用Spring配置文件

如何在windows上正确使用Spring配置文件,spring,spring-boot,spring-profiles,Spring,Spring Boot,Spring Profiles,我试图为开发和生产维护不同的Spring概要文件,为此,我在桌面上用我的Spring引导项目application-dev.properties和application-prod.properties创建了一个文件夹(web骨架) 但是,我无法将配置文件导入到我的项目中。我用于将其导入项目的代码如下所示 @Configuration @Profile("dev") @PropertySource("file:///${user.home}/web skeleton/application-dev

我试图为开发和生产维护不同的Spring概要文件,为此,我在桌面上用我的Spring引导项目application-dev.properties和application-prod.properties创建了一个文件夹(web骨架)

但是,我无法将配置文件导入到我的项目中。我用于将其导入项目的代码如下所示

@Configuration
@Profile("dev")
@PropertySource("file:///${user.home}/web skeleton/application-dev.properties")
public class DevelopmentConfig {
@Bean
public  EmailService emailService(){
    return new MockEmailService();
}

有人能告诉我这是否是在Spring中使用PropertySource的正确方法吗。

您可以选择定义一个自定义源来存储这些属性,否则将查找默认位置(classpath:application.properties)。因此,我们现在将上述注释添加到现有的properties类中:

@Configuration
@PropertySource("classpath:configprops.properties")
@ConfigurationProperties(prefix = "dev")
public class ConfigProperties {
    // previous code
}
现在,在属性文件中定义的、前缀为dev且与其中一个属性同名的任何属性都将自动指定给该对象

#Simple properties
dev.host=mailer@mail.com
dev.port=9000

检查

我也做过这种配置

只需在您的配置类中添加以下代码

@PropertySource("classpath:application-${spring.profiles.active}.properties")
这是application.properties中的属性

spring.profiles.active=dev

您可以根据需要将其更改为prod和cert。

准确定义“我无法”。你在做什么,你期望会发生什么,会发生什么?我正在尝试使用JPA,我已经在application-dev.properties文件中编写了使用H2数据库的配置。然而,JPA并没有创建我期望它创建的表。所以我假设这是由于属性文件没有被导入。这是一个相当疯狂的假设。在方法中添加System.out.println()(或简单地使用调试器)将确认或削弱正在调用它。您的JPA问题很可能是另一回事。好的,我将通过将其打印到控制台来调试它。你能告诉我,在windows机器上用我的方式定义@PropertySorce文件路径是否正确吗。我无法在网上找到一个好的解决方案。我不知道。测试它。这是正确的。但是,如果他必须将配置文件从dev更改为prod或cert,那么他必须一次又一次地重新编译代码。在Maven构建中使用外部配置文件:在您的pom.xml:org.apache.Maven.plugins Maven-surefire plugin-Dspring.config.location=file:${home}/conf/dev-external.properties中像这样配置Maven-surefire插件在IntelliJ:Run中运行JUnit测试时→ 编辑配置默认值→ JUnit添加VM选项->-ea-Dspring.config.location=文件:${home}/conf/dev-external.propertiesOr,否则只需使用环境变量,如${home},并用相同的名称命名属性。例如application.proeprites嘿,伙计们。我的配置文件位于计算机上的另一个目录中,不在项目文件夹中(即不在类路径中)。我希望spring获取该文件并为我初始化JPA属性。我把它放在一个单独的目录中,因为它有一些我不想包含在项目文件夹中的关键信息。因此,我使用“@PropertySource(“file://${user.home}/web skeleton/application-dev.properties”)”。我仍然不明白为什么在使用@Profile(“dev”)而不是@ConfigurationProperties(prefix=“dev”)时,我的代码不起作用。