二. fastDFS:springboot 整合fastDFS

一.引入官方客户端依赖

<!--FastDFS-->
<dependency>
    <groupId>net.oschina.zcx7878</groupId>
    <artifactId>fastdfs-client-java</artifactId>
    <version>1.27.0.0</version>
</dependency>
<!--pool-->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
    <version>2.4.2</version>
</dependency>

-- 以上只列举相关的依赖,其它依赖自行添加

二 . 配置文件

#######################FastDFS#######################
#文件服务器地址
file_server_addr=192.168.17.128:80
# 最大连接数 并发量较大的话可加大该连接数
max_storage_connection=10
#超时配置
fastdfs.connect_timeout_in_seconds=100000
fastdfs.network_timeout_in_seconds=300000
fastdfs.charset=UTF-8
#token 防盗链功能
fastdfs.http_anti_steal_token=true
#密钥,默认为FASTDFS1234567890
fastdfs.http_secret_key=FASTDFS1234567890
# TrackerServer port
fastdfs.http_tracker_http_port=6666
## Tracker Server, if more than one, separate with ","
fastdfs.tracker_servers=192.168.17.128:22122
#######################FastDFS#######################

-- FastDFS的配置文件只支持properties类型的,可以整合放入application.properties里面,但是不能放入yml类型的里面

三.服务端代码编写

 0.启动类配置

SpringbootFastdfsApplication.class
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
@EnableAutoConfiguration
@MapperScan(value = "com.vesus.springbootfastdfs.mapper")
@Configuration
@PropertySource(value = "classpath:fastdfs.properties",encoding = "utf-8")
public class SpringbootFastdfsApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootFastdfsApplication.class, args);
    }

    /**
     * war 包部署
     * @param application
     * @return
     */
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
    {
        return application.sources(SpringbootFastdfsApplication.class);
    }
}

 -- 

 1.编写调度tracker池

TrackerServerPool.class
public class TrackerServerPool {

    private static Logger logger= LoggerFactory.getLogger(TrackerServerPool.class);
    /***
     * 配置文件路径
     */
    private static final String FASTDFS_CONFIG_PATH = "fastdfs.properties";
    /***
     * 最大连接数
     */
    @Value("${max_storage_connection}")
    private static int maxStorageConnection ;
    /***
     * TrackerServer 对象池
     */
    private static GenericObjectPool<TrackerServer> pool ;
    /***
     * 无参构造函数
     */
    private TrackerServerPool(){}
    /***
     * 获取TrackerServer连接池
     * @return
     * @throws Exception
     */
    public static synchronized GenericObjectPool<TrackerServer> getObjectPool() throws  Exception{
        if (pool ==null){
            //加载配置文件
            ClientGlobal.initByProperties(FASTDFS_CONFIG_PATH);
            //pool配置,设置最大值和最小值
            GenericObjectPoolConfig config = new GenericObjectPoolConfig();
            config.setMinIdle(2);
            if (maxStorageConnection>0){
                config.setMaxIdle(maxStorageConnection);
            }

            pool = new GenericObjectPool<>(new TrackerServerFactory(),config) ;
        }
        return pool ;
    }
    /***
     * 获取TrackerServer
     * @return
     * @throws Exception
     */
    public static TrackerServer borrowObject()throws Exception{
        TrackerServer trackerServer = null;
        trackerServer = getObjectPool().borrowObject() ;
        return  trackerServer ;
    }
    /***
     * 回收 TrackerServer
     * @param server
     * @throws Exception
     */
    public static void recycleObject(TrackerServer server) throws Exception{
        getObjectPool().returnObject(server);
    }
}

2.fastdfs调度Tracker工厂

TrackerServerFactory.class
public class TrackerServerFactory extends BasePooledObjectFactory<TrackerServer> {

    public TrackerServer create() throws Exception {
        //实例化TrackerClient
        TrackerClient client = new TrackerClient();
        //获取TrackerServer
        TrackerServer trackerServer = client.getConnection();
        return trackerServer;
    }
    public PooledObject<TrackerServer> wrap(TrackerServer server) {
        return new DefaultPooledObject<TrackerServer>(server);
    }
}

3.编写fastdfs操作客户端

FastDFSClient.class
@Component
public class FastDFSClient {

    /**
     * 路径分隔符
     */
    public static final String SEPARATOR = "/";
    /**
     * Point
     */
    public static final String POINT = ".";
    /**
     * 
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值