我正在开发与远程主机通信的简单Spring Web应用程序,我想在公司代理后面进行本地测试.我使用"Spring Boot"gradle插件,问题是如何为JVM指定代理设置?
我尝试了几种方法:
gradle -Dhttp.proxyHost=X.X.X.X -Dhttp.proxyPort=8080 bootRunexport JAVA_OPTS="-Dhttp.proxyHost=X.X.X.X -Dhttp.proxyPort=8080"export GRADLE_OPTS="-Dhttp.proxyHost=X.X.X.X -Dhttp.proxyPort=8080"但似乎没有一个工作 - "NoRouteToHostException"抛出"网络"代码.另外,我添加了一些额外的代码来调试JVM启动参数:
RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
List<String> arguments = runtimeMxBean.getInputArguments();
for (String arg: arguments) System.out.println(arg);
Run Code Online (Sandbox Code Playgroud)
并且只打印了一个参数:" - Dfile.encoding = UTF-8".
如果我在代码中设置系统属性:
System.setProperty("http.proxyHost", "X.X.X.X");
System.setProperty("http.proxyPort", "8080");
Run Code Online (Sandbox Code Playgroud)
一切正常!
我希望我的默认活动配置文件是productionif if -Dspring.profiles.activenot set.
我尝试了以下内容,application.properties但它不起作用:
spring.profiles.default=production
Run Code Online (Sandbox Code Playgroud)
Spring-boot版本= 1.3.5.RELEASE
我使用此命令来运行我的 spring 应用程序 - java -jar -Dspring.profiles.active=native ddwa-services-app/target/ddwa-services-app-1.0-SNAPSHOT.jar,但是当从 IDE 运行该应用程序时,我需要添加运行配置,下面是显示我添加的内容的屏幕截图,但它对我不起作用。
这是我的application.yml文件:
spring:
freemarker:
template-loader-path: classpath:/templates
datasource:
url: jdbc:postgresql://localhost:5432/myapp
username: postgres
password: password
driver-class-name: org.postgresql.Driver
jpa:
show-sql: true
properties:
hibernate:
enable_lazy_load_no_trans: false
jdbc:
lob:
non_contextual_creation: true
dialect: org.hibernate.dialect.PostgreSQLDialect
hibernate:
ddl-auto: create-drop
---
spring:
profiles:
active: development
---
spring:
profiles: staging
jpa:
show-sql: true
hibernate:
ddl-auto: update
logging:
level:
root: DEBUG
---
spring:
profiles: production
jpa:
show-sql: false
hibernate:
ddl-auto: update
Run Code Online (Sandbox Code Playgroud)
我使用以下命令运行该应用程序:
java -jar application.jar -Dspring.profiles.active=staging
Run Code Online (Sandbox Code Playgroud)
在日志中,我可以看到spring boot打印出来: 下列配置文件处于活动状态:开发
那么,即使我在命令行args中显式设置了活动配置文件,为什么也不将其配置为暂存?
在Java Spring中,何时使用限定符标记与profile标记有意义?难道你不能使用任何一个,因为它们都是有条件的自动装配?使用其中一个或哪一个有什么好处或成本?