当前位置:编程学习 > JAVA >>

spring的aop技术,进不去切面方法,求助

<bean id="logService" class="com.incomrecycle.grms.service.LogServiceImpl"></bean>

 <aop:config>

        <aop:pointcut  expression="execution(* com.incomrecycle.grms.web.dao.DBUtil.insert*(..))"  id="myPointcut" />
        <aop:pointcut  expression="execution(* com.incomrecycle.grms.web.dao.DBUtil.executeSx*(..))" id="myPointcut1" />
        <aop:pointcut  expression="execution(* com.incomrecycle.grms.web.dao.DBUtil.query*(..))" id="myPointcut2" />

        <aop:aspect id="dd" ref="logService">
           
            <aop:after-returning method="logArgAndReturn" returning="returnObj"   pointcut-ref="myPointcut"/>
            <aop:after-returning method="logArgAndReturn" returning="returnObj"   pointcut-ref="myPointcut1"/>
            <aop:after-returning method="logArgAndReturn" returning="returnObj"   pointcut-ref="myPointcut2"/>

        </aop:aspect>

    </aop:config>


以上是applicationContext.xml的配置信息,
com.incomrecycle.grms.service.LogServiceImpl是切面的处理方法,现在怎么都进不去这个方法,不知道为什么。 我的DBUtil里面是用的单例模式写的,如下

public class DBUtil {
  
private JdbcTemplate jdbcTemplate;
 
private static DBUtil dbUtil=null; 




private DBUtil(){
jdbcTemplate =(JdbcTemplate)ContextLoader.getCurrentWebApplicationContext().getBean("jdbcTemplate");
 }
 
 public synchronized  static DBUtil getConnection() {
         if (dbUtil == null) {  
          dbUtil = new DBUtil();
          } 
        return dbUtil;
}
  
        public void insert(){
     ………………

        public void update(){
     ………………


} --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 你切得是* com.incomrecycle.grms.web.dao.DBUtil这里面的方法,而不是你那个什么service里面的方法 --------------------编程问答-------------------- 同上
<bean id="logService" class="com.incomrecycle.grms.service.LogServiceImpl"></bean>
 <aop:config>
        <aop:pointcut  expression="execution(* com.incomrecycle.grms.service.LogServiceImpl.*(..))"  id="myPointcut" />
        <aop:aspect id="dd" ref="logService">
            <aop:after-returning method="logArgAndReturn" returning="returnObj"   pointcut-ref="myPointcut"/>
        </aop:aspect>
     </aop:config>
--------------------编程问答--------------------
引用 2 楼 coolbamboo2008 的回复:
你切得是* com.incomrecycle.grms.web.dao.DBUtil这里面的方法,而不是你那个什么service里面的方法
 对啊,我就是要切DBUTil, 在DButil运行后,在用service里面处理一些数据 --------------------编程问答--------------------
引用 3 楼 u011213572 的回复:
同上
<bean id="logService" class="com.incomrecycle.grms.service.LogServiceImpl"></bean>
 <aop:config>
        <aop:pointcut  expression="execution(* com.incomrecycle.grms.service.LogServiceImpl.*(..))"  id="myPointcut" />
        <aop:aspect id="dd" ref="logService">
            <aop:after-returning method="logArgAndReturn" returning="returnObj"   pointcut-ref="myPointcut"/>
        </aop:aspect>
     </aop:config>


但是我处理切面的方法往哪里放呢?我要横切DBUtil然后用service做后期处理 --------------------编程问答-------------------- 嗯 找到原因了,我的DButil没有用spring容器进行管理,所以导致spring下的aop无法使用
补充:Java ,  Web 开发
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,