java_opts 不是内部或外部命令,java – Spring Boot外部化属性不起作用

我不使用此方法来外部属性.首先,我会尝试为您的方法提出建议,然后我会告诉您我正在使用的内容.

你的方法的建议是使用file:///而不是file:/和Spring一样,我发现在冒号后没有传递三个斜杠时它不能识别属性.

现在我使用的方法.

我为每个配置文件定义了一个配置文件,并将application.properties文件保存在src / main / resources下.

然后我在每个配置文件上使用@Profile和@PropertySource注释.

例如:

@Configuration

@Profile("dev")

@PropertySource("file:///${user.home}/.devopsbuddy/application-dev.properties")

public class DevelopmentConfig {

@Bean

public EmailService emailService() {

return new MockEmailService();

}

@Bean

public ServletRegistrationBean h2ConsoleServletRegistration() {

ServletRegistrationBean bean = new ServletRegistrationBean(new WebServlet());

bean.addUrlMappings("/console/*");

return bean;

}

}

@Configuration

@Profile("prod")

@PropertySource("file:///${user.home}/.devopsbuddy/application-prod.properties")

public class ProductionConfig {

@Bean

public EmailService emailService() {

return new SmtpEmailService();

}

}

我还有一个对所有配置文件都有效的配置文件,我称之为ApplicationConfig,如下所示:

@Configuration

@EnableJpaRepositories(basePackages = "com.devopsbuddy.backend.persistence.repositories")

@EntityScan(basePackages = "com.devopsbuddy.backend.persistence.domain.backend")

@EnableTransactionManagement

@PropertySource("file:///${user.home}/.devopsbuddy/application-common.properties")

public class ApplicationConfig {

}

我的src / main / resources / application.properties文件如下所示:

spring.profiles.active=dev

default.to.address=me@example.com

token.expiration.length.minutes=120

当然,我可以通过将它作为系统属性传递来外化spring.profile.active属性,但就我的情况而言,现在它很好.

运行应用程序时,如果我传递“dev”配置文件,Spring将加载DevelopmentConfig类中定义的所有属性和Bean以及ApplicationConfig中的所有属性和Bean.如果我传递“prod”,则将加载ProductionConfig和ApplicationConfig属性.

我正在完成一个关于如何使用安全性,电子邮件,数据JPA,亚马逊网络服务,条纹等创建Spring Boot网站的课程.如果您愿意,可以注册您的兴趣here,当课程开放注册时您会收到通知.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值