Skip to content

Commit

Permalink
增加Ucloud、平安云、青云代码(未测试),更新README,增加JDBC存储配置说明
Browse files Browse the repository at this point in the history
  • Loading branch information
artislong committed Mar 14, 2022
1 parent c5b2fab commit 59d914f
Show file tree
Hide file tree
Showing 20 changed files with 1,555 additions and 16 deletions.
126 changes: 126 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@

[金山云](https://docs.ksyun.com/documents/38731)

[网易数帆](https://sf.163.com/help/documents/68792520222625792)

[JDBC](https://gitee.com/spring-boot-starter/oss-spring-boot-starter#%E9%87%91%E5%B1%B1%E4%BA%91)

特别说明:本地存储、SFTP、FTP三种实现方式主要基于[hutool](https://hutool.cn/)提供的`FileUtil``FileNameUtil``AbstractFtp`相关的工具。

## 开始使用
Expand Down Expand Up @@ -927,6 +931,128 @@ oss:
part-size: 104857600
```
### 网易数帆
```xml
<dependency>
<groupId>com.netease.cloud</groupId>
<artifactId>nos-sdk-java-publiccloud</artifactId>
<version>1.3.1</version>
</dependency>
```

在application.yml中增加如下配置:

- 单个配置

```yaml
oss:
wangyi:
enable: true
endpoint: endpoint
access-key: accessKey
secret-key: secretKey
bucket-name: bucket
base-path: 根路径
slice-config:
task-num: 8
part-size: 104857600
```
- 批量配置
```yaml
oss:
wangyi:
enable: true
oss-config:
wangyiOssClient1:
endpoint: endpoint
access-key: accessKey
secret-key: secretKey
bucket-name: bucket
base-path: 根路径
slice-config:
task-num: 8
part-size: 104857600
```
**注:** 对于批量配置,如endpoint、access-key、secret-key可复用,基础配置中配置这三个参数,批量配置中配置其他如bucket-name等参数即可,示例如下:
```yaml
oss:
wangyi:
enable: true
endpoint: endpoint
access-key: accessKey
secret-key: secretKey
oss-config:
wangyiOssClient1:
bucket-name: bucket
base-path: 根路径
slice-config:
task-num: 8
part-size: 104857600
```
### Jdbc
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
```

在application.yml中增加如下配置:

- 单个配置

```yaml
oss:
jdbc:
enable: true
base-path: /Study
type: com.zaxxer.hikari.HikariDataSource
url: jdbc:mysql://localhost:3306/oss?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
driver: com.mysql.cj.jdbc.Driver
username: root
password: root
```
- 批量配置
```yaml
oss:
jdbc:
enable: true
oss-config:
jdbcOssClient1:
base-path: /Study
type: com.zaxxer.hikari.HikariDataSource
url: jdbc:mysql://localhost:3306/oss?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
driver: com.mysql.cj.jdbc.Driver
username: root
password: root
```
**注:**
1、当项目本身不使用数据库时,需增加此注解`@EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class)`,移除数据源默认配置,仅需配置对象存储数据源即可
2、若想直接使用项目本身配置的数据源作为对象存储库时,则不需要增加如上注解,同时在配置好默认数据源的同时,OSS的配置可参考下面配置。
3、存储表结构建表脚本见jar包中的jdbc目录下

```yaml
oss:
jdbc:
enable: true
base-path: /Study
```

新功能持续增加中,敬请期待!!!

## 单元测试
Expand Down
2 changes: 2 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -230,10 +230,12 @@
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>

Expand Down
2 changes: 0 additions & 2 deletions src/main/java/io/github/artislong/core/ftp/FtpOssClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -174,13 +174,11 @@ public void delete(String targetName) {

@Override
public void copy(String sourceName, String targetName, Boolean isOverride) {
// TODO ftp协议不支持copy命令,暂不实现
log.warn("ftp协议不支持copy命令,暂不实现");
}

@Override
public void move(String sourceName, String targetName, Boolean isOverride) {
// TODO ftp协议不支持move命令,暂不实现
log.warn("ftp协议不支持move命令,暂不实现");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,14 @@
import io.github.artislong.constant.OssConstant;
import io.github.artislong.core.StandardOssClient;
import io.github.artislong.core.jdbc.model.JdbcOssConfig;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
Expand All @@ -29,28 +30,41 @@
@Configuration
@ConditionalOnClass(JdbcTemplate.class)
@EnableConfigurationProperties({JdbcOssProperties.class})
@EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class)
//@EnableAutoConfiguration(exclude = DataSourceAutoConfiguration.class) // 项目本身不使用数据库时,需增加此注解,移除数据源默认配置,仅需配置对象存储数据源即可
@ConditionalOnProperty(prefix = OssConstant.OSS, name = OssConstant.OssType.JDBC + CharPool.DOT + OssConstant.ENABLE,
havingValue = OssConstant.DEFAULT_ENABLE_VALUE)
public class JdbcOssConfiguration {
public class JdbcOssConfiguration implements ApplicationContextAware {

public static final String DEFAULT_BEAN_NAME = "jdbcOssClient";

@Setter
private ApplicationContext applicationContext;

@Autowired
private JdbcOssProperties jdbcOssProperties;

@Bean
public void jdbcOssClient() {
Map<String, JdbcOssConfig> ossConfigMap = jdbcOssProperties.getOssConfig();
if (ObjectUtil.isEmpty(jdbcOssProperties.getDriver()) && ObjectUtil.isEmpty(jdbcOssProperties.getType()) &&
ObjectUtil.isEmpty(jdbcOssProperties.getUrl()) && ObjectUtil.isEmpty(jdbcOssProperties.getUsername()) &&
ObjectUtil.isEmpty(jdbcOssProperties.getPassword())) {
SpringUtil.registerBean(DEFAULT_BEAN_NAME, jdbcOssClient(jdbcTemplate(applicationContext.getBean(DataSource.class)), jdbcOssProperties));
return;
}
if (ossConfigMap.isEmpty()) {
SpringUtil.registerBean(DEFAULT_BEAN_NAME, jdbcOssClient(jdbcOssProperties));
SpringUtil.registerBean(DEFAULT_BEAN_NAME, jdbcOssClient(jdbcTemplate(jdbcOssProperties), jdbcOssProperties));
} else {
ossConfigMap.forEach((name, ossConfig) -> SpringUtil.registerBean(name, jdbcOssClient(ossConfig)));
ossConfigMap.forEach((name, ossConfig) -> SpringUtil.registerBean(name, jdbcOssClient(jdbcTemplate(ossConfig), ossConfig)));
}
}

public StandardOssClient jdbcOssClient(JdbcOssConfig jdbcOssConfig) {
return new JdbcOssClient(jdbcTemplate(jdbcOssConfig), jdbcOssConfig);
public StandardOssClient jdbcOssClient(JdbcTemplate jdbcTemplate, JdbcOssConfig jdbcOssConfig) {
return new JdbcOssClient(jdbcTemplate, jdbcOssConfig);
}

public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}

public JdbcTemplate jdbcTemplate(JdbcOssConfig jdbcOssConfig) {
Expand All @@ -66,6 +80,6 @@ public JdbcTemplate jdbcTemplate(JdbcOssConfig jdbcOssConfig) {
.password(jdbcOssConfig.getPassword())
.build();

return new JdbcTemplate(dataSource);
return jdbcTemplate(dataSource);
}
}
Loading

0 comments on commit 59d914f

Please sign in to comment.