├── src └── main │ ├── resources │ └── META-INF │ │ ├── spring.provides │ │ └── spring.factories │ └── java │ └── com │ └── luhuiguo │ └── fastdfs │ ├── FdfsProperties.java │ └── FdfsAutoConfiguration.java ├── README.md ├── .gitignore └── pom.xml /src/main/resources/META-INF/spring.provides: -------------------------------------------------------------------------------- 1 | provides: fastdfs-spring-boot-starter -------------------------------------------------------------------------------- /src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | com.luhuiguo.fastdfs.FdfsAutoConfiguration -------------------------------------------------------------------------------- /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.luhuiguo 10 | fastdfs-spring-boot-starter 11 | 0.1.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 | -------------------------------------------------------------------------------- /src/main/java/com/luhuiguo/fastdfs/FdfsProperties.java: -------------------------------------------------------------------------------- 1 | package com.luhuiguo.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 | -------------------------------------------------------------------------------- /.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 -------------------------------------------------------------------------------- /src/main/java/com/luhuiguo/fastdfs/FdfsAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.luhuiguo.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 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | com.luhuiguo 5 | fastdfs-spring-boot-starter 6 | 0.2.0 7 | jar 8 | 9 | org.springframework.boot 10 | spring-boot-starter-parent 11 | 1.5.3.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 | 31 | scm:git:git@github.com:luhuiguo/fastdfs-spring-boot-starter.git 32 | scm:git:git@github.com:luhuiguo/fastdfs-spring-boot-starter.git 33 | git@github.com:luhuiguo/fastdfs-spring-boot-starter.git 34 | 35 | 36 | 37 | 1.8 38 | UTF-8 39 | UTF-8 40 | 41 | 0.4.0 42 | 1.2.2 43 | 44 | 45 | 46 | 47 | com.luhuiguo 48 | fastdfs-client 49 | ${fastdfs-client.version} 50 | 51 | 52 | 53 | 54 | org.springframework.boot 55 | spring-boot 56 | 57 | 58 | org.springframework.boot 59 | spring-boot-configuration-processor 60 | true 61 | 62 | 63 | org.springframework.boot 64 | spring-boot-starter-test 65 | test 66 | 67 | 68 | 69 | 70 | ossrh 71 | https://oss.sonatype.org/content/repositories/snapshots 72 | 73 | 74 | ossrh 75 | https://oss.sonatype.org/service/local/staging/deploy/maven2/ 76 | 77 | 78 | 79 | 80 | 81 | org.apache.maven.plugins 82 | maven-compiler-plugin 83 | 84 | ${project.build.sourceEncoding} 85 | ${java.version} 86 | ${java.version} 87 | true 88 | 89 | 90 | 91 | org.sonatype.plugins 92 | nexus-staging-maven-plugin 93 | 1.6.8 94 | true 95 | 96 | ossrh 97 | https://oss.sonatype.org/ 98 | true 99 | 100 | 101 | 102 | 103 | 104 | 105 | release 106 | 107 | 108 | 109 | org.apache.maven.plugins 110 | maven-source-plugin 111 | 3.0.1 112 | 113 | 114 | attach-sources 115 | 116 | jar-no-fork 117 | 118 | 119 | 120 | 121 | 122 | org.apache.maven.plugins 123 | maven-javadoc-plugin 124 | 2.10.4 125 | 126 | 127 | attach-javadocs 128 | 129 | jar 130 | 131 | 132 | -Xdoclint:none 133 | 134 | 135 | 136 | 137 | 138 | org.apache.maven.plugins 139 | maven-gpg-plugin 140 | 1.6 141 | 142 | 143 | sign-artifacts 144 | verify 145 | 146 | sign 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | --------------------------------------------------------------------------------