如何在springboot

时间:2017-03-06 05:52:42

标签: spring-boot

我有一些配置文件,与其他系统共享。所以,我希望每次在应用程序启动之前通过Git同步这些文件。该应用程序已存档到Spring-boot JAR文件。

首先,我做了一个实验。我试图从外部目录加载logback配置文件:logback.xml。根据springboot doc http://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/loader/PropertiesLauncher.html。我将load.path参数添加到启动命令。

java -Dloader.home="./" -Dloader.path="sds_ser/" -Djava.security.egd=file:/dev/./urandom -jar service-0.0.1-SNAPSHOT.jar --spring.profiles.active=test

sds_ser是logback.xml的目录。哪个服务-0.0.1-SNAPSHOT.jar.But启动失败,无法找到logback.xml!

任何人都可以提供帮助吗?谢谢!

2 个答案:

答案 0 :(得分:0)

我使用以下内容覆盖外部位置的属性。

@Configuration
@PropertySource(value = "file:/var/tmp/${spring.application.name}/${MY_APP_PROFILE:h2}/conf/override.properties", ignoreResourceNotFound = true)
class AppConfig {
    @Bean
    public PropertyPlaceholderConfigurer placeholderConfigurer() {
        PropertyPlaceholderConfigurer configurer = new PropertyPlaceholderConfigurer();
        configurer.setIgnoreUnresolvablePlaceholders(true);
        return configurer;
    }
}

答案 1 :(得分:0)

如果需要将自定义文件加载到spring boot jar(超级jar)的类路径中,可以通过在运行期间设置类路径来实现。

java -cp" / sds_ser /:/ pathtoyourjar / service-0.0.1-SNAPSHOT.jar" -Djava.security.egd = file:/ dev /./ urandom -Dspring.profiles.active = test org.springframework.boot.loader.JarLauncher

这假设您的文件位于服务器上的路径/ sds_ser中。 -Dloader.path根据文档

仅执行以下操作
  

loader.path可以包含目录(以递归方式扫描)   jar和zip文件),归档路径,归档中的目录   扫描jar文件(例如,dependencies.jar!/ lib),或   通配符模式(用于默认的JVM行为)。存档路径可以是   相对于loader.home或文​​件系统中的任何位置   jar:file:prefix。

另据以下网站

http://javarevisited.blogspot.in/2011/01/how-classpath-work-in-java.html

  

当您使用java -jar命令行时,还值得注意   将Java程序作为可执行JAR运行的选项,然后是   CLASSPATH环境变量将被忽略,而且-cp和   -classpath开关将被忽略。

所以你必须给它运行的主类,即org.springframework.boot.loader.JarLauncher

相关问题