zoukankan      html  css  js  c++  java
  • spring java 方式配置JedisPool Bean

    来自一个开源项目https://git.oschina.net/geek_qi/ace-cache

    package com.ace.cache.config;
    
    import com.ace.cache.utils.PropertiesLoaderUtils;
    import org.apache.commons.lang3.StringUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.env.Environment;
    
    import redis.clients.jedis.JedisPool;
    import redis.clients.jedis.JedisPoolConfig;
    
    import javax.annotation.PostConstruct;
    
    @Configuration
    public class RedisConfig {
        @Autowired
        private Environment env;
        private JedisPool pool;
        private String maxActive;
        private String maxIdle;
        private String maxWait;
        private String host;
        private String password;
        private String timeout;
        private String database;
        private String port;
        private String enable;
        private String sysName;
    
        @PostConstruct
        public void  init(){
            PropertiesLoaderUtils prop = new PropertiesLoaderUtils("application.properties");
            host = prop.getProperty("redis.host");
            if(StringUtils.isBlank(host)){
                host = env.getProperty("redis.host");
                maxActive = env.getProperty("redis.pool.maxActive");
                maxIdle  = env.getProperty("redis.pool.maxIdle");
                maxWait = env.getProperty("redis.pool.maxWait");
                password = env.getProperty("redis.password");
                timeout = env.getProperty("redis.timeout");
                database = env.getProperty("redis.database");
                port = env.getProperty("redis.port");
                sysName = env.getProperty("redis.sysName");
                enable = env.getProperty("redis.enable");
            } else{
                maxActive = prop.getProperty("redis.pool.maxActive");
                maxIdle  = prop.getProperty("redis.pool.maxIdle");
                maxWait = prop.getProperty("redis.pool.maxWait");
                password = prop.getProperty("redis.password");
                timeout = prop.getProperty("redis.timeout");
                database = prop.getProperty("redis.database");
                port = prop.getProperty("redis.port");
                sysName = prop.getProperty("redis.sysName");
                enable = prop.getProperty("redis.enable");
            }
        }
    
        @Bean
        public JedisPoolConfig constructJedisPoolConfig() {
            JedisPoolConfig config = new JedisPoolConfig();
            // 控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;
            // 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
            config.setMaxTotal(Integer.parseInt(maxActive));
            // 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。
            config.setMaxIdle(Integer.parseInt(maxIdle));
            // 表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;
            config.setMaxWaitMillis(Integer.parseInt(maxWait));
            config.setTestOnBorrow(true);
    
            return config;
        }
    
        @Bean(name = "pool")
        public JedisPool constructJedisPool() {
            String ip = this.host;
            int port = Integer.parseInt(this.port);
            String password = this.password;
            int timeout = Integer.parseInt(this.timeout);
            int database = Integer.parseInt(this.database);
            if (null == pool) {
                if (StringUtils.isBlank(password)) {
                    pool = new JedisPool(constructJedisPoolConfig(), ip, port, timeout);
                } else {
                    pool = new JedisPool(constructJedisPoolConfig(), ip, port, timeout, password, database);
                }
            }
            return pool;
        }
    
        public String getMaxActive() {
            return maxActive;
        }
    
        public void setMaxActive(String maxActive) {
            this.maxActive = maxActive;
        }
    
        public String getMaxIdle() {
            return maxIdle;
        }
    
        public void setMaxIdle(String maxIdle) {
            this.maxIdle = maxIdle;
        }
    
        public String getMaxWait() {
            return maxWait;
        }
    
        public void setMaxWait(String maxWait) {
            this.maxWait = maxWait;
        }
    
        public String getHost() {
            return host;
        }
    
        public void setHost(String host) {
            this.host = host;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String getTimeout() {
            return timeout;
        }
    
        public void setTimeout(String timeout) {
            this.timeout = timeout;
        }
    
        public String getDatabase() {
            return database;
        }
    
        public void setDatabase(String database) {
            this.database = database;
        }
    
        public String getSysName() {
            return sysName;
        }
    
        public void setSysName(String sysName) {
            this.sysName = sysName;
        }
    
        public String getEnable() {
            return enable;
        }
    
        public void setEnable(String enable) {
            this.enable = enable;
        }
    
        public String getPort() {
            return port;
        }
    
        public void setPort(String port) {
            this.port = port;
        }
    }
  • 相关阅读:
    2019年2月8日训练日记(文件操作知识点小结)
    2019年2月7日训练日记
    2019年2月6日训练日记
    2019年2月5日训练日记
    2019年2月4日训练日记(递归学习小结)
    【Java】Java中的IO流
    【Java】Java中线程的使用
    【Java】Java图形化用户界面-GUI
    【Java】Java中的集合类
    C++程序学习之实现手机通讯录功能模拟
  • 原文地址:https://www.cnblogs.com/guazi/p/6892792.html
Copyright © 2011-2022 走看看