自己封装了一个redis注入类,正常注入没有问题,但是如果注入变量名写错了就出现了一个奇怪问题,具体情况如下:
封装的redis类代码:
@IocBean
public class RedisStarter implements ServerFace {
@Inject
protected PropertiesProxy conf;
@Inject("refer:$ioc")
protected Ioc ioc;
// @IocBean(name = "redis")
public void init() {
// 扫描所有redisName
String regex = "redis\\.(\\w*)\\.host";
for (String key : conf.getKeys()) {
Pattern pattern = Regex.getPattern(regex);
Matcher match = pattern.matcher(key);
if (match.find()) {
// 获取redisName
String redisName = match.group(1);
if(!redisName.equals("local")) { // local会在最后默认处理
Redis redis = new Redis(redisName, conf);
ioc.addBean(redisName + "Redis", redis);
}
}
}
// return new Redis("local", conf); // 注入默认redis,如果没有配置local,但用户使用了默认redis,则会抛出异常 throw Lang.makeThrow("未连接到Redis,请检查配置项");
}
@Override
public void start() throws Exception {
init();
}
}
配置文件如下:
redis.ad.host=127.0.0.1:6379
redis.ad.password=
redis.ad.pool.max.total=50
redis.ad.pool.max.idle=5
redis.ad.pool.max.wait.millis=100000
redis.ad.pool.test.on.borrow=true
redis.aaa.host=127.0.0.1:6380
redis.aaa.password=
redis.aaa.pool.max.total=50
redis.aaa.pool.max.idle=5
redis.aaa.pool.max.wait.millis=100000
redis.aaa.pool.test.on.borrow=true
正确注入代码:
@Inject
Redis aaaRedis;
@Inject
Redis adRedis;
错误注入代码:
@Inject
Redis redisAAA;
@Inject
Redis redisAd;
我的疑问是,我使用错误注入代码竟然不报错,而且还能正常操作redis,不正常的是,redisAAA和redisAd都是访问的redis.ad.host这个redis,不知道这是个什么原理