Spring boot Spring.datasource.initialize=false不工作

Spring boot Spring.datasource.initialize=false不工作,spring-boot,spring-batch,Spring Boot,Spring Batch,我正在研究spring启动和批处理应用程序。 由于批处理,应用程序尝试连接到数据源 使用弹簧引导:运行。 我想停止该操作并尝试spring.datasource.initialize=false 除此之外,还放入spring.batch.job.enabled=false 虽然第二个很好,但第一个似乎被忽略了 有人能告诉我是否有办法在启动时停止db连接吗? 提前感谢据我所知,您不希望在应用程序启动期间阻止数据库连接 相反,您希望阻止执行批处理脚本 如果我弄错了,请纠正我 要防止执行批处理脚本集,

我正在研究spring启动和批处理应用程序。 由于批处理,应用程序尝试连接到数据源 使用
弹簧引导:运行
。
我想停止该操作并尝试
spring.datasource.initialize=false

除此之外,还放入
spring.batch.job.enabled=false

虽然第二个很好,但第一个似乎被忽略了

有人能告诉我是否有办法在启动时停止db连接吗?
提前感谢

据我所知,您不希望在应用程序启动期间阻止数据库连接

相反,您希望阻止执行批处理脚本

如果我弄错了,请纠正我

要防止执行批处理脚本集,请执行以下操作:

spring.batch.initializer.enabled=false

据我所知,您不希望在应用程序启动期间阻止数据库连接

相反,您希望阻止执行批处理脚本

如果我弄错了,请纠正我

要防止执行批处理脚本集,请执行以下操作:

spring.batch.initializer.enabled=false

问题是,spring/spring引导在“引导”时加载整个spring上下文。这意味着,在这个引导阶段,所有定义的Springbean都被加载到spring上下文中。在SpringBatch的情况下,这也意味着加载了DataSourceBean,如果没有通过“spring.batch.initializer.enabled=false”关闭,SpringBatch表将被初始化

通常,一旦将spring批处理启动程序添加到maven依赖项中,就无法阻止这种情况发生

而且,我不明白你为什么要阻止这种事情发生。它只是进行初始化,如果所有配置都正确,这应该不会是一个问题

尽管如此,如果您确实想停止初始化数据源,可以尝试以下方法。然而,我不知道这是否有效

Spring批处理需要一个在Spring上下文中以名称“datasource”注册的数据源。如果没有找到具有该名称的Springbean,它将创建自己的Springbean。但是如果您为它提供自己的实现/配置,它将使用您的Springbean

您需要做的是,为延迟加载的数据源提供代理,然后在上下文中以“datasource”的名称注册它:

@Configuration
public class MySetUp {

    @Bean
    public DataSource dataSource() {
        // ... create your "lazy initializing" datasource 
    }
}
但是,让我强调一下,我不会推荐任何东西,我也看不出有什么好的理由,为什么有必要这么做

此外,您提到您只希望加载“初始静态索引页面”(我假设您正在谈论html,对吗?)。然而,我没有看到“批处理”用例,它应该显示html页面。在这种情况下,最好有两个不同的应用程序


可能您可以提供一些关于您的用例的更多信息。

问题是,spring/spring引导在“引导”时加载整个spring上下文。这意味着,在这个引导阶段,所有定义的Springbean都被加载到spring上下文中。在SpringBatch的情况下,这也意味着加载了DataSourceBean,如果没有通过“spring.batch.initializer.enabled=false”关闭,SpringBatch表将被初始化

通常,一旦将spring批处理启动程序添加到maven依赖项中,就无法阻止这种情况发生

而且,我不明白你为什么要阻止这种事情发生。它只是进行初始化,如果所有配置都正确,这应该不会是一个问题

尽管如此,如果您确实想停止初始化数据源,可以尝试以下方法。然而,我不知道这是否有效

Spring批处理需要一个在Spring上下文中以名称“datasource”注册的数据源。如果没有找到具有该名称的Springbean,它将创建自己的Springbean。但是如果您为它提供自己的实现/配置,它将使用您的Springbean

您需要做的是,为延迟加载的数据源提供代理,然后在上下文中以“datasource”的名称注册它:

@Configuration
public class MySetUp {

    @Bean
    public DataSource dataSource() {
        // ... create your "lazy initializing" datasource 
    }
}
但是,让我强调一下,我不会推荐任何东西,我也看不出有什么好的理由,为什么有必要这么做

此外,您提到您只希望加载“初始静态索引页面”(我假设您正在谈论html,对吗?)。然而,我没有看到“批处理”用例,它应该显示html页面。在这种情况下,最好有两个不同的应用程序


也许您可以提供一些关于您的用例的更多信息。

还尝试了spring.batch.initialize.enabled=false您不能。一个
数据源
一旦被引用就会被创建。
initialize
属性将仅停止表的创建,而不是开始
DataSource
本身。还尝试了spring.batch.initialize.enabled=false您不能。一个
数据源
一旦被引用就会被创建。
initialize
属性只会停止表的创建,而不是
DataSource
本身的开始。我想同时对这两个属性执行srop操作。虽然我能够停止批量初始化,但我无法停止数据库初始化。我希望只在实际需要时调用数据库,而不是在加载初始静态索引页时调用数据库。虽然我能够停止批量初始化,但我无法停止数据库初始化。我希望数据库只在实际需要时调用,而不是在加载初始静态索引页时调用。我正在使用spring boot controller并调用一个可以独立于POJO的通用批处理作业。我快到了,但还没到。开始面临数据库初始化问题。我试图阻止这一切,结果真的搞砸了。我的应用程序在没有POJo读取thr'itemreader并传递给writer以在db中写入的情况下加载任何文件。