一、项目结构
SFTP
SftpProperties --配置载入
SftpFactory ---连接工厂
SftpPool ----连接池
SftpHelper ----辅助方法,下载
二、maven
<!-- ftp远程工具 -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.3</version>
<!-- https://mvnrepository.com/artifact/com.jcraft/jsch -->
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.53</version>
</dependency>
<!-- pool 对象池 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
三、配置文件
config:
# 协议
sftpClientProtocol: sftp
# ip地址
sftpClientHost: ip
# 端口
sftpClientPort: 2222
# 用户名
sftpClientUsername: name
# 密码
sftpClientPassword: password
# 根路径
sftpClientRoot: /
fileBackupPaths: D:/2023/TEST/LDPBACKS/
remotePaths: /home/LDP/
#本地路径
localPaths: D:/2023/TEST/LDP/
#
sftpClientSessionStrictHostKeyChecking: no
# session连接超时时间
sftpClientSessionConnectTimeout: 15000
# channel连接超时时间
sftpClientChannelConnectedTimeout: 15000
sftpMaxTotal: 100
sftpMinIdel: 2
sftpMaxIdle: 20
四、代码
4.1 SftpProperties.class
import com.jcraft.jsch.ChannelSftp;
import lombok.Data;
import org.apache.commons.pool2.impl.GenericObjectPool;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
/**
* @author gyDeBug
* @description: 配置文件和实体注入
* @param:
* @return:
* @date:2021/11/30
*/
@Data
@Component
@Configuration
public class SftpProperties {
private String host;
private int port;
private String username;
private String password;
private String root;
private String localPath;
private String fileBackupPaths;
private String remotePaths;
private Integer sessionConnectTimeout;
private Integer channelConnectedTimeout;
private Pool pool = new Pool();
@Value("${config.sftpClientHost}")
public void setHost(String host) {
this.host = host;
}
@Value("${config.sftpClientPort}")
public void setPort(int port) {
this.port = port;
}
@Value("${config.sftpClientUsername}")
public void setUsername(String username) {
this.username = username;

本文介绍了如何使用Spring Boot集成commons-net和jsch库,实现SFTP连接池配置、工厂、池管理和文件下载的详细步骤,包括配置文件、SFTPProperties、SftpFactory和SftpHelper类的实现。

4647

被折叠的 条评论
为什么被折叠?



