请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

构造器的问题

https://img1.sycdn.imooc.com//szimg/59f4205900010f4513580384.jpg

这里提示需要构造器,老师给出的代码中并未提及。请问这里的构造器怎么写呢?

正在回答 回答被采纳积分+3

插入代码

1回答

翔仔 2017-10-28 15:38:52

同学您好,构造器不需要写,这里它会自动去注入的哈,因为Strings和Keys是Jedis的内部类,所以需要先new出这个jedisUtil来,因此需要用到这个构造函数创建出外部类,但是不需要写入,以下是我的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
package com.imooc.o2o.cache;
 
import java.util.Set;
 
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.util.SafeEncoder;
 
public class JedisUtil {
    /**
     * 缓存生存时间
     */
    private final int expire = 60000;
    /** 操作Key的方法 */
    public Keys KEYS;
    /** 对存储结构为String类型的操作 */
    public Strings STRINGS;
 
    /** Redis连接池对象 */
    private JedisPool jedisPool;
 
    /**
     * 获取redis连接池
     
     * @return
     */
    public JedisPool getJedisPool() {
        return jedisPool;
    }
 
    /**
     * 设置redis连接池
     
     * @return
     */
    public void setJedisPool(JedisPoolWriper jedisPoolWriper) {
        this.jedisPool = jedisPoolWriper.getJedisPool();
    }
 
    /**
     * 从jedis连接池中获取获取jedis对象
     
     * @return
     */
    public Jedis getJedis() {
        return jedisPool.getResource();
    }
 
    // *******************************************Keys*******************************************//
    public class Keys {
 
        /**
         * 清空所有key
         */
        public String flushAll() {
            Jedis jedis = getJedis();
            String stata = jedis.flushAll();
            jedis.close();
            return stata;
        }
 
        /**
         * 删除keys对应的记录,可以是多个key
         
         * @param String
         *            ... keys
         * @return 删除的记录数
         */
        public long del(String... keys) {
            Jedis jedis = getJedis();
            long count = jedis.del(keys);
            jedis.close();
            return count;
        }
 
        /**
         * 判断key是否存在
         
         * @param String
         *            key
         * @return boolean
         */
        public boolean exists(String key) {
            // ShardedJedis sjedis = getShardedJedis();
            Jedis sjedis = getJedis();
            boolean exis = sjedis.exists(key);
            sjedis.close();
            return exis;
        }
 
        /**
         * 查找所有匹配给定的模式的键
         
         * @param String
         *            key的表达式,*表示多个,?表示一个
         */
        public Set<String> keys(String pattern) {
            Jedis jedis = getJedis();
            Set<String> set = jedis.keys(pattern);
            jedis.close();
            return set;
        }
    }
 
    // *******************************************Strings*******************************************//
    public class Strings {
        /**
         * 根据key获取记录
         
         * @param String
         *            key
         * @return 值
         */
        public String get(String key) {
            // ShardedJedis sjedis = getShardedJedis();
            Jedis sjedis = getJedis();
            String value = sjedis.get(key);
            sjedis.close();
            return value;
        }
 
        /**
         * 添加记录,如果记录已存在将覆盖原有的value
         
         * @param String
         *            key
         * @param String
         *            value
         * @return 状态码
         */
        public String set(String key, String value) {
            return set(SafeEncoder.encode(key), SafeEncoder.encode(value));
        }
 
        /**
         * 添加记录,如果记录已存在将覆盖原有的value
         
         * @param byte[]
         *            key
         * @param byte[]
         *            value
         * @return 状态码
         */
        public String set(byte[] key, byte[] value) {
            Jedis jedis = getJedis();
            String status = jedis.set(key, value);
            jedis.close();
            return status;
        }
 
    }
 
}

同学周末愉快

0 回复 有任何疑惑可以回复我~
  • 他一直报错 怎么解决啊!!!
    回复 有任何疑惑可以回复我~ 2017-11-15 15:28:09
  • 请问同学报的什么错
    还有注意pom.xml里的jar包要引全
    回复 有任何疑惑可以回复我~ 2017-11-15 15:42:05
  • 老师您好,我也碰到了和楼主一模一样的错误,看到了您的回答。但是恕学生水平太浅,没有看懂老师的回答,能请老师再细致点说说吗?
    1.这里报错的地方是spring-redix.xml文件,您所说的new出这个jedisUtil,指的是哪里?
    2.您指的不需要写构造器,我是否可以理解成spring通过自动注入的方式自动生成了key和string两个类,相当于通过构造函数创建出了外部类
    3.这里的错误要如何解决我仍然没有弄懂
    回复 有任何疑惑可以回复我~ 2018-01-20 18:19:29
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号