├── 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 |
--------------------------------------------------------------------------------