Eclipse spring boot中的catalina.base系统属性重写?

Eclipse spring boot中的catalina.base系统属性重写?,eclipse,spring,spring-boot,embedded-tomcat-7,Eclipse,Spring,Spring Boot,Embedded Tomcat 7,我的项目使用catalina.base系统属性获取相对于该属性文件夹位置的资源。在Eclipse中工作时,我传递-Dcatalina.base=。作为应用程序主类的VM参数 我的主类是这样实现的: @ComponentScan @EnableAutoConfiguration public class Main { private static final Logger logger = LogManager.getLogger(); public static void m

我的项目使用catalina.base系统属性获取相对于该属性文件夹位置的资源。在Eclipse中工作时,我传递-Dcatalina.base=。作为应用程序主类的VM参数

我的主类是这样实现的:

@ComponentScan
@EnableAutoConfiguration
public class Main {

    private static final Logger logger = LogManager.getLogger();

    public static void main(String[] args) {

        if ( logger.isDebugEnabled() )  {
            String debugCatalinaBase = System.getProperty("catalina.base");
            // here catalinaBase is set to "." as expected.
            logger.debug("catalinaBase: {}", debugCatalinaBase);
        }

        SpringApplication.run(Main.class, args);
    }
}
@Configuration
public class ApplicationConfig {

    private static final Logger logger = LogManager.getLogger();

    @Value("${catalina.base}")
    private String catalinaBase;

    @Bean
    public Properties jndiProperties() {

        if ( logger.isDebugEnabled() )  {
            String debugCatalinaBase = System.getProperty("catalina.base");
            // here catalinaBase is set to "C:\Users\theUser\AppData\Local\Temp\tomcat.8558104871268204693.8081". NOT as expected!!!
            logger.debug("catalinaBase: {}", debugCatalinaBase);
        }

        Properties properties = new Properties();
        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY,
            CnsContextFactory.class.getName());
        properties.setProperty(Context.PROVIDER_URL,
            "file:" + catalinaBase + "\\conf\\jndi.properties");
        return properties;
    }

    @Bean( name = "propertyConfigurer" )
    public static PropertySourcesPlaceholderConfigurer propertyConfigurer() {
        PropertySourcesPlaceholderConfigurer configurer = 
            new PropertySourcesPlaceholderConfigurer();
        return configurer;
    }
}
作为本项目的一部分,我有一个ApplicationConfig类,其实现如下:

@ComponentScan
@EnableAutoConfiguration
public class Main {

    private static final Logger logger = LogManager.getLogger();

    public static void main(String[] args) {

        if ( logger.isDebugEnabled() )  {
            String debugCatalinaBase = System.getProperty("catalina.base");
            // here catalinaBase is set to "." as expected.
            logger.debug("catalinaBase: {}", debugCatalinaBase);
        }

        SpringApplication.run(Main.class, args);
    }
}
@Configuration
public class ApplicationConfig {

    private static final Logger logger = LogManager.getLogger();

    @Value("${catalina.base}")
    private String catalinaBase;

    @Bean
    public Properties jndiProperties() {

        if ( logger.isDebugEnabled() )  {
            String debugCatalinaBase = System.getProperty("catalina.base");
            // here catalinaBase is set to "C:\Users\theUser\AppData\Local\Temp\tomcat.8558104871268204693.8081". NOT as expected!!!
            logger.debug("catalinaBase: {}", debugCatalinaBase);
        }

        Properties properties = new Properties();
        properties.setProperty(Context.INITIAL_CONTEXT_FACTORY,
            CnsContextFactory.class.getName());
        properties.setProperty(Context.PROVIDER_URL,
            "file:" + catalinaBase + "\\conf\\jndi.properties");
        return properties;
    }

    @Bean( name = "propertyConfigurer" )
    public static PropertySourcesPlaceholderConfigurer propertyConfigurer() {
        PropertySourcesPlaceholderConfigurer configurer = 
            new PropertySourcesPlaceholderConfigurer();
        return configurer;
    }
}
正如您在代码段的注释中所看到的,在ApplicationConfig中,catalina.base系统属性已更改,我不确定这是为什么或在哪里发生的

关于信息,我的项目使用SpringBootStarter xxx:1.1.4.RELEASE jars和Springxxx:4.0.6.RELEASE jars

另外,我还有一个项目,它遵循几乎相同的总体模式,使用相同的jar,并且该项目总是将catalina.base设置为预期的“.”。所以我想知道问题是否与spring配置在有问题的项目中的加载顺序有关,或者与这些方面有关

提前感谢您在这方面的帮助。
PM

使用临时目录作为源,从
TomcatEmbeddedServletContainerFactory
启动字符串调用
Tomcat.setBaseDir(…)
。当调用
org.apache.catalina.startup.Tomcat
中的方法时,Tomcat实际上设置了
catalina.base
属性


如果不希望Spring Boot使用临时文件夹,则需要将
server.tomcat.basedir
添加到
应用程序.properties

使用临时目录作为源,从
TomcatEmbeddedServletContainerFactory调用
tomcat.setBaseDir(…)
。当调用
org.apache.catalina.startup.Tomcat
中的方法时,Tomcat实际上设置了
catalina.base
属性

如果不希望Spring Boot使用临时文件夹,则需要将
server.tomcat.basedir
添加到
application.properties