├── .gitignore ├── README.md ├── pom.xml └── src └── main ├── java └── com │ └── pig4cloud │ └── fastdfs │ ├── FdfsAutoConfiguration.java │ └── FdfsProperties.java └── resources └── META-INF ├── additional-spring-configuration-metadata.json ├── spring.factories └── spring.provides /.gitignore: -------------------------------------------------------------------------------- 1 | ###################### 2 | # Eclipse 3 | ###################### 4 | .project 5 | .metadata 6 | local.properties 7 | .classpath 8 | .settings/ 9 | .loadpath 10 | .externalToolBuilders/ 11 | *.launch 12 | .cproject 13 | .buildpath 14 | .springBeans 15 | .factorypath 16 | 17 | ###################### 18 | # Intellij 19 | ###################### 20 | .idea/ 21 | *.iml 22 | *.iws 23 | *.ipr 24 | *.ids 25 | *.orig 26 | 27 | ###################### 28 | # Maven 29 | ###################### 30 | logs/ 31 | target/ 32 | 33 | ###################### 34 | # Gradle 35 | ###################### 36 | .gradle/ 37 | 38 | ###################### 39 | # Node 40 | ###################### 41 | node/ 42 | node_modules/ 43 | 44 | ###################### 45 | # Bower 46 | ###################### 47 | bower_components/ 48 | 49 | ###################### 50 | # SASS 51 | ###################### 52 | .sass-cache/ 53 | .tmp/ 54 | 55 | ###################### 56 | # Windows 57 | ###################### 58 | Thumbs.db 59 | Desktop.ini 60 | 61 | ###################### 62 | # Mac OSX 63 | ###################### 64 | .DS_Store 65 | ._* 66 | .Spotlight-V100 67 | .Trashes 68 | 69 | ###################### 70 | # SVN 71 | ###################### 72 | .svn 73 | 74 | ###################### 75 | # Logs and databases 76 | ###################### 77 | *.log 78 | *.sqlite 79 | *.state 80 | *.lock 81 | *.crf 82 | *.drf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Spring Boot FastDFS Starter 2 | 3 | Usage: 4 | 5 | Add dependency **fastdfs-spring-boot-starter** to **pom.xml** 6 | 7 | ```xml 8 | 9 | com.pig4cloud.fastdfs 10 | fastdfs-spring-boot-starter 11 | 0.4.0 12 | 13 | ``` 14 | 15 | Config **application.yml** 16 | 17 | ```yml 18 | fdfs: 19 | connect-timeout: 2000 20 | so-timeout: 3000 21 | tracker-list: 22 | - 10.1.5.85:22122 23 | - 10.1.5.86:22122 24 | 25 | ``` 26 | 27 | Inject **FastFileStorageClient** 28 | 29 | ```java 30 | @Autowired 31 | private FastFileStorageClient storageClient; 32 | ``` 33 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | com.pig4cloud.fastdfs 5 | fastdfs-spring-boot-starter 6 | 0.4.0 7 | jar 8 | 9 | org.springframework.boot 10 | spring-boot-starter-parent 11 | 2.2.5.RELEASE 12 | 13 | FastDFS Spring Boot Starter 14 | https://github.com/luhuiguo/fastdfs-spring-boot-starter 15 | 16 | Starter for using FastDFS(An open source high performance distributed file system). 17 | 18 | 19 | 20 | The GNU Lesser General Public License, version 3.0 21 | http://opensource.org/licenses/LGPL-3.0 22 | 23 | 24 | 25 | 26 | luhuiguo 27 | luhuiguo@gmail.com 28 | 29 | 30 | lengleng 31 | wangiegie@gmail.com 32 | 33 | 34 | 35 | scm:git:git@github.com:luhuiguo/fastdfs-spring-boot-starter.git 36 | scm:git:git@github.com:luhuiguo/fastdfs-spring-boot-starter.git 37 | git@github.com:luhuiguo/fastdfs-spring-boot-starter.git 38 | 39 | 40 | 41 | 1.8 42 | UTF-8 43 | UTF-8 44 | 45 | 0.4.0 46 | 1.2.2 47 | 48 | 49 | 50 | 51 | com.luhuiguo 52 | fastdfs-client 53 | ${fastdfs-client.version} 54 | 55 | 56 | 57 | org.springframework.boot 58 | spring-boot-starter 59 | provided 60 | 61 | 62 | org.springframework.boot 63 | spring-boot-configuration-processor 64 | true 65 | 66 | 67 | 68 | 69 | ossrh 70 | https://oss.sonatype.org/content/repositories/snapshots 71 | 72 | 73 | ossrh 74 | https://oss.sonatype.org/service/local/staging/deploy/maven2/ 75 | 76 | 77 | 78 | 79 | 80 | org.apache.maven.plugins 81 | maven-compiler-plugin 82 | 3.5.1 83 | 84 | 1.8 85 | 1.8 86 | true 87 | true 88 | UTF-8 89 | 90 | 91 | 92 | org.apache.maven.plugins 93 | maven-source-plugin 94 | 3.0.1 95 | 96 | true 97 | 98 | 99 | 100 | compile 101 | 102 | jar 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | release 112 | 113 | 114 | 115 | 116 | org.apache.maven.plugins 117 | maven-source-plugin 118 | 2.2.1 119 | 120 | 121 | package 122 | 123 | jar-no-fork 124 | 125 | 126 | 127 | 128 | 129 | 130 | org.apache.maven.plugins 131 | maven-javadoc-plugin 132 | 2.9.1 133 | 134 | private 135 | true 136 | UTF-8 137 | UTF-8 138 | UTF-8 139 | -Xdoclint:none 140 | 141 | 142 | 143 | package 144 | 145 | jar 146 | 147 | 148 | 149 | 150 | 151 | 152 | org.apache.maven.plugins 153 | maven-gpg-plugin 154 | 1.5 155 | 156 | 157 | verify 158 | 159 | sign 160 | 161 | 162 | 163 | 164 | 165 | org.sonatype.plugins 166 | nexus-staging-maven-plugin 167 | 1.6.8 168 | true 169 | 170 | sonatype 171 | https://oss.sonatype.org/ 172 | true 173 | 174 | 175 | 176 | 177 | 178 | 179 | sonatype 180 | 181 | https://oss.sonatype.org/content/repositories/snapshots/ 182 | 183 | 184 | 185 | sonatype 186 | 187 | https://oss.sonatype.org/service/local/staging/deploy/maven2/ 188 | 189 | 190 | 191 | 192 | 193 | 194 | -------------------------------------------------------------------------------- /src/main/java/com/pig4cloud/fastdfs/FdfsAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.pig4cloud.fastdfs; 2 | 3 | import org.springframework.boot.context.properties.ConfigurationProperties; 4 | import org.springframework.boot.context.properties.EnableConfigurationProperties; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | import com.luhuiguo.fastdfs.conn.ConnectionManager; 9 | import com.luhuiguo.fastdfs.conn.ConnectionPoolConfig; 10 | import com.luhuiguo.fastdfs.conn.FdfsConnectionPool; 11 | import com.luhuiguo.fastdfs.conn.PooledConnectionFactory; 12 | import com.luhuiguo.fastdfs.conn.TrackerConnectionManager; 13 | import com.luhuiguo.fastdfs.service.AppendFileStorageClient; 14 | import com.luhuiguo.fastdfs.service.DefaultAppendFileStorageClient; 15 | import com.luhuiguo.fastdfs.service.DefaultFastFileStorageClient; 16 | import com.luhuiguo.fastdfs.service.DefaultTrackerClient; 17 | import com.luhuiguo.fastdfs.service.FastFileStorageClient; 18 | import com.luhuiguo.fastdfs.service.TrackerClient; 19 | 20 | @Configuration 21 | @EnableConfigurationProperties(FdfsProperties.class) 22 | public class FdfsAutoConfiguration { 23 | 24 | private final FdfsProperties properties; 25 | 26 | public FdfsAutoConfiguration(FdfsProperties properties) { 27 | super(); 28 | this.properties = properties; 29 | } 30 | 31 | @Bean 32 | public PooledConnectionFactory pooledConnectionFactory() { 33 | PooledConnectionFactory pooledConnectionFactory = new PooledConnectionFactory(); 34 | pooledConnectionFactory.setSoTimeout(properties.getSoTimeout()); 35 | pooledConnectionFactory.setConnectTimeout(properties.getConnectTimeout()); 36 | return pooledConnectionFactory; 37 | } 38 | 39 | 40 | @Bean 41 | @ConfigurationProperties(prefix = "fdfs.pool") 42 | public ConnectionPoolConfig connectionPoolConfig() { 43 | ConnectionPoolConfig connectionPoolConfig = new ConnectionPoolConfig(); 44 | return connectionPoolConfig; 45 | } 46 | 47 | @Bean 48 | public FdfsConnectionPool fdfsConnectionPool(PooledConnectionFactory pooledConnectionFactory, 49 | ConnectionPoolConfig connectionPoolConfig) { 50 | FdfsConnectionPool pool = new FdfsConnectionPool(pooledConnectionFactory, connectionPoolConfig); 51 | return pool; 52 | } 53 | 54 | @Bean 55 | public TrackerConnectionManager trackerConnectionManager(FdfsConnectionPool fdfsConnectionPool) { 56 | return new TrackerConnectionManager(fdfsConnectionPool, properties.getTrackerList()); 57 | } 58 | 59 | @Bean 60 | public TrackerClient trackerClient(TrackerConnectionManager trackerConnectionManager) { 61 | return new DefaultTrackerClient(trackerConnectionManager); 62 | } 63 | 64 | @Bean 65 | public ConnectionManager connectionManager(FdfsConnectionPool fdfsConnectionPool) { 66 | return new ConnectionManager(fdfsConnectionPool); 67 | } 68 | 69 | @Bean 70 | public FastFileStorageClient fastFileStorageClient(TrackerClient trackerClient, 71 | ConnectionManager connectionManager) { 72 | return new DefaultFastFileStorageClient(trackerClient, connectionManager); 73 | } 74 | 75 | @Bean 76 | public AppendFileStorageClient appendFileStorageClient(TrackerClient trackerClient, 77 | ConnectionManager connectionManager) { 78 | return new DefaultAppendFileStorageClient(trackerClient, connectionManager); 79 | } 80 | 81 | } 82 | -------------------------------------------------------------------------------- /src/main/java/com/pig4cloud/fastdfs/FdfsProperties.java: -------------------------------------------------------------------------------- 1 | package com.pig4cloud.fastdfs; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | import org.springframework.boot.context.properties.ConfigurationProperties; 7 | 8 | @ConfigurationProperties(prefix = "fdfs") 9 | public class FdfsProperties { 10 | 11 | /** 读取时间 */ 12 | private int soTimeout = 1000; 13 | /** 连接超时时间 */ 14 | private int connectTimeout = 1000; 15 | 16 | /** Tracker 地址列表 */ 17 | private List trackerList = new ArrayList<>(); 18 | 19 | public int getSoTimeout() { 20 | return soTimeout; 21 | } 22 | 23 | public void setSoTimeout(int soTimeout) { 24 | this.soTimeout = soTimeout; 25 | } 26 | 27 | public int getConnectTimeout() { 28 | return connectTimeout; 29 | } 30 | 31 | public void setConnectTimeout(int connectTimeout) { 32 | this.connectTimeout = connectTimeout; 33 | } 34 | 35 | public List getTrackerList() { 36 | return trackerList; 37 | } 38 | 39 | public void setTrackerList(List trackerList) { 40 | this.trackerList = trackerList; 41 | } 42 | 43 | 44 | } 45 | -------------------------------------------------------------------------------- /src/main/resources/META-INF/additional-spring-configuration-metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "hints": [], 3 | "properties": [ 4 | { 5 | "sourceType": "com.pig4cloud.fastdfs.FdfsProperties", 6 | "name": "fdfs", 7 | "type": "com.pig4cloud.fastdfs.FdfsProperties" 8 | }, 9 | { 10 | "sourceType": "com.pig4cloud.fastdfs.FdfsProperties", 11 | "name": "fdfs.so-timeout", 12 | "description": "读取时间.", 13 | "defaultValue": 1000, 14 | "type": "java.lang.Integer" 15 | }, 16 | { 17 | "sourceType": "com.pig4cloud.fastdfs.FdfsProperties", 18 | "name": "fdfs.connect-timeout", 19 | "description": "连接超时时间.", 20 | "defaultValue": 1000, 21 | "type": "java.lang.Integer" 22 | }, 23 | { 24 | "sourceType": "com.pig4cloud.fastdfs.FdfsProperties", 25 | "name": "fdfs.tracker-list", 26 | "description": "Tracker 地址列表.", 27 | "type": "java.util.List" 28 | } 29 | ] 30 | } -------------------------------------------------------------------------------- /src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | com.pig4cloud.fastdfs.FdfsAutoConfiguration -------------------------------------------------------------------------------- /src/main/resources/META-INF/spring.provides: -------------------------------------------------------------------------------- 1 | provides: fastdfs-spring-boot-starter --------------------------------------------------------------------------------