package com.fqx.xactivation.token;
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME) // 必须带这个,不然读取不到的
@Target({ElementType.METHOD}) // aop,一般指方法
@Documented // 记录到javadoc
public @interface Slog {
}
package com.fqx.xactivation.token;
import org.nutz.aop.InterceptorChain;
import org.nutz.aop.MethodInterceptor;
import org.nutz.ioc.Ioc;
import org.nutz.ioc.aop.SimpleAopMaker;
import org.nutz.log.Log;
import org.nutz.log.Logs;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.List;
public class DemoAopLoader extends SimpleAopMaker<Slog> {
public List<? extends MethodInterceptor> makeIt(Slog sysLog, Method method, Ioc ioc) {
return Arrays.asList(new SysLogMethodInterceptor());
}
}
class SysLogMethodInterceptor implements MethodInterceptor {
private static final Log log = Logs.get();
@Override
public void filter(final InterceptorChain chain) throws Throwable {
log.debug("hi");
chain.doChain(); // 继续下一个拦截器, 如果要终止执行,不调用该方法即可
log.debug("byte");
}
}
package com.fqx.xactivation;
import org.nutz.integration.shiro.ShiroSessionProvider;
import org.nutz.mvc.annotation.ChainBy;
import org.nutz.mvc.annotation.IocBy;
import org.nutz.mvc.annotation.Modules;
import org.nutz.mvc.annotation.SessionBy;
import org.nutz.mvc.annotation.SetupBy;
import org.nutz.mvc.ioc.provider.ComboIocProvider;
@ChainBy(args="mvc/nutzbook-mvc-chain.js")
@SetupBy(value=MainSetup.class)
@IocBy(type=ComboIocProvider.class, args={"*js", "ioc/",
"*anno", "com.fqx.xactivation",
"*tx", // 事务拦截 aop
"*async",
"*com.fqx.xactivation.token.DemoAopLoader"
}) // 异步执行aop
@Modules(scanPackage=true)
@SessionBy(ShiroSessionProvider.class)
public class MainModule {
}
2022-03-21 15:51:51,811 org.nutz.mvc.impl.UrlMappingImpl.get(UrlMappingImpl.java:103) DEBUG - Found mapping for [POST] path=/active/getAllDevives : AtiveModule.getAllDevives(AtiveModule.java:87)
2022-03-21 15:51:51,811 com.fqx.xactivation.MyLogTimeProcessor.process(MyLogTimeProcessor.java:18) DEBUG - 日志系统
2022-03-21 15:51:51,833 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:166) DEBUG - Get 'ativeModule'<class com.fqx.xactivation.module.AtiveModule>
2022-03-21 15:51:51,833 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:192) DEBUG - >> Load definition name=ativeModule
2022-03-21 15:51:51,834 org.nutz.ioc.loader.combo.ComboIocLoader.printFoundIocBean(ComboIocLoader.java:226) DEBUG - Found IocObject(ativeModule) in AnnotationIocLoader(packages=[com.fqx.xactivation])
2022-03-21 15:51:51,835 org.nutz.ioc.impl.NutIoc.get(NutIoc.java:223) DEBUG - >> Make...'ativeModule'<class com.fqx.xactivation.module.AtiveModule>
2022-03-21 15:51:51,836 org.nutz.ioc.impl.ScopeContext.save(ScopeContext.java:65) DEBUG - Save object 'ativeModule' to [app]
2022-03-21 15:51:51,855 org.nutz.ioc.impl.ScopeContext.remove(ScopeContext.java:85) DEBUG - Remove object 'ativeModule' from [app]
2022-03-21 15:51:51,856 com.fqx.xactivation.MyLogTimeProcessor.process(MyLogTimeProcessor.java:24) DEBUG - [POST]URI=/xactivation/active/getAllDevives 45ms
2022-03-21 15:51:51,857 org.nutz.mvc.impl.processor.FailProcessor.process(FailProcessor.java:28) WARN - Error@/active/getAllDevives :
org.nutz.ioc.IocException: IocBean[ativeModule] throw Exception when creating
at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:153)
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:241)
at org.nutz.ioc.impl.NutIoc.get(NutIoc.java:271)
at org.nutz.mvc.impl.processor.ModuleProcessor.process(ModuleProcessor.java:116)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.EncodingProcessor.process(EncodingProcessor.java:27)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.UpdateRequestAttributesProcessor.process(UpdateRequestAttributesProcessor.java:15)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at com.fqx.xactivation.MyLogTimeProcessor.process(MyLogTimeProcessor.java:19)
at org.nutz.mvc.impl.NutActionChain.doChain(NutActionChain.java:44)
at org.nutz.mvc.impl.ActionInvoker.invoke(ActionInvoker.java:56)
at org.nutz.mvc.ActionHandler.handle(ActionHandler.java:31)
at org.nutz.mvc.NutFilter.doFilter(NutFilter.java:202)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:450)
at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:387)
at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:889)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoSuchMethodError: java.lang.invoke.MethodHandles$Lookup.defineClass([B)Ljava/lang/Class;
at org.nutz.lang.reflect.ReflectTool.defineClass(ReflectTool.java:74)
at org.nutz.lang.reflect.ReflectTool.defineClass(ReflectTool.java:66)
at org.nutz.aop.DefaultClassDefiner.define(DefaultClassDefiner.java:25)
at org.nutz.aop.asm.AsmClassAgent.generate(AsmClassAgent.java:35)
at org.nutz.aop.AbstractClassAgent.define(AbstractClassAgent.java:56)
at org.nutz.aop.AbstractClassAgent.define(AbstractClassAgent.java:43)
at org.nutz.ioc.aop.impl.DefaultMirrorFactory.getMirror(DefaultMirrorFactory.java:95)
at org.nutz.ioc.impl.ObjectMakerImpl.make(ObjectMakerImpl.java:101)
... 49 more
搞不懂是哪儿出问题了,再DemoAopLoader 加上iocbean也不行