美文网首页Spring Boot我爱编程
@PostConstruct 标签使用

@PostConstruct 标签使用

作者: wyatt_plus | 来源:发表于2018-04-09 14:26 被阅读251次

    @PostContruct是spring框架的注解,在方法上加该注解会在项目启动的时候执行该方法,就是在spring容器初始化的时候就会执行该方法。
    以下是我用来配置redis模块所进行的初始化redis连接配置:

    package io.fredia.femicro.cache.config;
    
    import javax.annotation.PostConstruct;
    
    import org.apache.commons.lang3.StringUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.env.Environment;
    
    import io.fredia.femicro.cache.utils.PropertiesLoaderUtils;
    import redis.clients.jedis.JedisPool;
    import redis.clients.jedis.JedisPoolConfig;
    
    @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;
        }
    }
    
    
    

    相关文章

      网友评论

        本文标题:@PostConstruct 标签使用

        本文链接:https://www.haomeiwen.com/subject/jflihftx.html