我想在aop的拦截器里面写一些信息进数据库,注入service的时候失败,报空指针怎么办
18 回复
就是把service设置成属性对象,再加ioc注入获取类赋值给这个属性,就可以呢?
if(operatingRecordService==null){
RecordService = iocs.get(RecordService.class);
刚开始的时候这和方法的ioc参数不知道有什么用现在知道原来是这样用
public List<? extends MethodInterceptor> makeIt(orecord orecord, Method method, Ioc ioc)
请问那个这样是什么意思,
为什么这样的话可以获取到注解的值不用的话第二次注解的值获取不到,
请问这个循环使用来做什么的?
operatingurl = new CharSegment(orecord.operatingurl());
for (String key : operatingurl.keys()) {
System.out.println(key);
els.put(key, new El(key));
}
这个是slog,想问的是CharSegment 这个是有什么用的,字符分割?
before = new CharSegment(slog.before())为什么这样第二次执行的时候还有值,而this.before =slog.before ();这样的话第二次执行方法时,before的值为空。
protected CharSegment before;
protected CharSegment after;
protected CharSegment error;
protected boolean async;
protected Map<String, El> els;
protected Ioc ioc;
public SlogAopInterceptor(Ioc ioc, Slog slog, Method method) {
els = new HashMap<String, El>();
if (!Strings.isBlank(slog.before())) {
before = new CharSegment(slog.before());
for (String key : before.keys()) {
els.put(key, new El(key));
}
}
if (!Strings.isBlank(slog.after())) {
after = new CharSegment(slog.after());
for (String key : after.keys()) {
els.put(key, new El(key));
}
}
if (!Strings.isBlank(slog.error())) {
error = new CharSegment(slog.error());
for (String key : error.keys()) {
els.put(key, new El(key));
}
}
this.ioc = ioc;
this.source = method.getDeclaringClass().getName() + "#" + method.getName();
this.tag = slog.tag();
Slog _s = method.getDeclaringClass().getAnnotation(Slog.class);
if (_s != null) {
this.tag = _s.tag() + "," + this.tag;
}
this.async = slog.async();
}
添加回复
请先登陆