-
[荣耀师兄]袁磊6
SSM在项目运行时,首先会加载web.xml.
其中web.xml里的加载顺序如下:
1,applicationContext.xml(上下文<context-param>);
2,listener(监听器);
3,filter(过滤器);
4,servlet(在web服务器上运行的程序,前端控制器DispatcherServlet,初始化Springmvc.xml,
拦截器);
Spring做的工作:
application.xml:加载上下文相关的解析器<context:property-placeholder>,上下文内容扫描除了controller类其他都扫,配置dataSource,配置sqlSessionFactory,扫描mapper。
springmvc.xml:
扫描controller,配置处理器映射器,处理器适配器和视图解析器
mybatis:建立接口mapper的实现配置,mapper.xml.
web.xml:
配置springmvc的前端控制器,springmvc配置文件的位置,加载spring容器。
经过以上分析就能知道为什么当AOP的切入点设置在controller类里时为什么其配置文件不能设置在application.xml里了.由web.xml的加载顺序可知程序先加载application.xml,但是那时程序上下文中还不包含controller类,所以aop的配置是不起作用,当程序加载到servlet时,程序上下文中才加载了controller类,所以AOP的配置文件应该配置在springmvc.xml中.
编辑于2019-07-13 -
[深圳|结业弟子]JAVA----0
选择好切点点位置:
private static final String POINT = "execution (* com.*.*.*(..))";
//对切点方法进行增强
@Around(POINT)
public Object timeController(ProceedingJoinPoint pjp)
在POINT定义好需要切入的位置;
还有在Spring-MVC中加入:
<aop:aspectj-autoproxy proxy-target-class="true"/>
编辑于2018-10-20 -
[西安|结业弟子]JAVA-鲁伯良0编辑于2018-12-15
-
[郑州|散修弟子]JAVA-71610编辑于2019-06-28
-
[上海|]JAVA-0
首先是切点位置的选择,如果使用的是工具类的方式,记得注入方法,applicationContext获取 然后getbean来完成包装后方法的类,然后进行使用。记得不要忘记开启注解扫描,注解还是需要的。
编辑于2019-07-08 -
[成都|]JAVA-0
贴一篇自己的AOP文件配置,这里我之前也遇到过,是因为切入到的实现类不正确,尤其要主要@Pointcut的那个地方.后面那句话一定要注意有没有到实现类中.
@Aspect
@Component
public class serviceAOP {
@Pointcut("execution(* com.jnshu.service..*Impl.*(..))")
public void serviceAspect(){}
@Around(value = "serviceAspect()")
public Object log(ProceedingJoinPoint pjp) throws Throwable {
Logger logger = LogManager.getLogger(pjp.getTarget());
String className = pjp.getTarget().getClass().getName();
String methodName = pjp.getSignature().getName();
logger.info("start active:{}{} method",className,methodName);
long startTime = System.currentTimeMillis();
Object obj = pjp.proceed();
long endTime = System.currentTimeMillis();
logger.info("return:{},excution time:{}ms",obj,endTime-startTime);
return obj;
}
}编辑于2019-08-13
- 去第 页