当前位置: 首页 > 知识库问答 >
问题:

从网络数据库读取SpringBatch

鄢朝斑
2023-03-14

我有一个springbatch应用程序,我将连接到一个网络数据库进行阅读。我发现的大多数示例都嵌入了数据库,用于独立html" target="_blank">测试。我不想那样做。我不确定配置是否类似。以下是我所拥有的最具德国特色的部分(带有一些异议):

@Configuration
@EnableBatchProcessing
public class BatchConfig {


    @Autowired
    public JobBuilderFactory jobBuilderFactory;

    @Autowired
    public StepBuilderFactory stepBuilderFactory;


    private static final String GET_DATA =
        "SELECT " +
                "stuffA, " +
                "stuffB, " +
                "FROM STUFF_TABLE " +
                "ORDER BY stuffA ASC";

    @Bean
    public ItemReader<StuffDto> itemReader(DataSource dataSource) {
        return new JdbcCursorItemReaderBuilder<StuffDto>()
            .name("cursorItemReader")
            .dataSource(dataSource)
            .sql(GET_DATA)
            .rowMapper(new BeanPropertyRowMapper<>(StuffDto.class))
            .build();
}

....

,然后从应用程序启动:

@SpringBootApplication
@EnableBatchProcessing
public class BatchApplication {

    public static void main(String[] args) {
        SpringApplication.run(BatchApplication.class, args);
    }
}

我没有配置数据源。我不确定,因为我的基本上只是一个到远程网络数据库的客户端连接,它的配置是否会与我找到的各种示例的嵌入式设置不同。所以我自然会出错(如下)。我只是在寻找一个简单的配置来实例化数据源,即到我的远程数据库的连接。

谢谢你的回复

...

启动ApplicationContext时出错。要显示条件报告,请在启用“调试”的情况下重新运行应用程序。2020-08-21 13:18:09.773错误1220---[main]o.s.b.d.记录故障分析报告员:

应用程序无法启动

描述:

java中方法itemReader的参数0。主要的配置配置BatchConfig需要一个“javax”类型的bean。sql。找不到“数据源”。

已找到以下候选项,但无法注入:-未加载“JndiDataSourceAutoConfiguration”中的Bean方法“dataSource”,因为@ConditionalOnProperty(spring.dataSource.jndi name)未找到属性“jndi name”-未加载“XadasourceAutoConfiguration”中的Bean方法“dataSource”,因为@ConditionalOnClass未找到属性“jndi name”必选类“javax”。交易TransactionManager'

行动:

考虑重新访问上面的条目或在配置中定义类型为'javax.sql.DataSource'的bean。

共有1个答案

叶茂才
2023-03-14

Ajavax。sql。数据源是对远程/本地/嵌入式数据源的抽象。因此,这是一个配置问题,您可以在其中将JDBC连接字符串设置为远程数据库主机。下面是一个远程MySQL数据源的示例:

@Bean
public DataSource dataSource() {
    MysqlDataSource datasource = new MysqlDataSource();
    // config values could be injected from properties/environment variables
    datasource.setURL("jdbc:mysql://REMOTE_HOST:PORT/schema");
    datasource.setUser("username");
    datasource.setPassword("passord");
    return datasource;
}

Spring Batch使用的是数据源对象,不(也不应该)知道它是本地的、远程的还是嵌入式的。

 类似资料:
  • 未来你可能会用 Redis 服务器或者其他的消息队列系统来作为 logstash broker 的角色。不过 Logstash 其实也有自己的 TCP/UDP 插件,在临时任务的时候,也算能用,尤其是测试环境。 小贴士:虽然 LogStash::Inputs::TCP 用 Ruby 的 Socket 和 OpenSSL 库实现了高级的 SSL 功能,但 Logstash 本身只能在 SizedQu

  • 我是新来的JavaScript,所以我可能有一些非常规的编程方式。也就是说,我正在做一个项目,我需要读写数据到自定义BLE设备。我使用gatt服务器协议进行连接。我能够与设备连接,但现在我试图从寄存器中读取数据。 我看了从谷歌以及网络蓝牙github的网络样本,但我无法理解它。下面的代码是我目前试图打破这一点。早期的尝试让我陷入了这样一个事实,即我得到的值是一个对象或一个promise对象。

  • 我试图从Firebase数据库中读取数据,我已经到处阅读和查找,但我已经走到了死胡同。 这就是我所做的一切。 依赖项: 实现'com.google.firebase: Firebase存储: 9.2.1' 实现'com。谷歌。firebase:firebase数据库:9.2。1' 实现'com。谷歌。firebase:firebase授权:9.2。1' 实现'com。谷歌。火基:火基核心:9.2。

  • 我有一个示例API请求,它返回用户的WatchList列表。我想在用户加载watchlist屏幕时实现以下流程: 差异与 i.Same->一切都很好,因为数据已经显示给用户,什么都不做。 ii.Differs->将保存到本地存储,并将发送到下游。 到目前为止我做了什么? watchlist.kt localstore.kt(Android room) > 实现上述逻辑的最佳方法是什么? 我是否泄漏

  • 我已经花了几个小时阅读产品分支中的0和1。请在Firebase数据库有经验的人帮助我:(

  • 因此,我尝试拍摄数据库的快照,并添加带有子项的数组字符串中的项。 我的set和get java文件如下所示 但是,当我的程序到达dataQuery方法并尝试获取和设置名称和成分时,它会崩溃。有人能解释一下我做错了什么,以及是否有更好的方法来使用数据库快照来做到这一点吗? 进程:in.tvac.akshayejh.firebasesearch,PID:24798java.lang.NullPoint