注解方式配置的AOP为什么不起作用呢

Java_er 2016-08-24 10:17:27

@Aspect
@Component
public class LogAspect {

public LogAspect() {
System.out.println(3798789);
}

@Before("execution(* com.example.action.UserInfoAction.loginaJAX(..))")
public void beforeMethod(){
System.out.println("方法开始执行前");
}
}





spring-servlet.xml





<!-- Post processor that automatically invokes init() and destroy() methods -->
<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>


<bean
class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
depends-on="lifecycleBeanPostProcessor" >

<property name="proxyTargetClass" value="true"/>
</bean>




web.xml



<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring/spring-config-jpa.xml
classpath:spring/spring-shiro.xml
</param-value>
</context-param>

<servlet>
<servlet-name>SpringMVCTest</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVCTest</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>



请问为什么这个AOP不起作用啊
...全文
571 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
康贝勒 2020-04-03
  • 打赏
  • 举报
回复 1
引用 11 楼 康贝勒 的回复:
我也找了好久问题,最后再配置文件中加这么一句: <bean id="随意起名字" class="指向要被代理的全路径类"></bean>
例如在你的项目里应该这么写: <bean id="LogAspect" class="com.xx.xx.LogAspect"></bean>
康贝勒 2020-04-03
  • 打赏
  • 举报
回复 1
我也找了好久问题,最后再配置文件中加这么一句: <bean id="随意起名字" class="指向要被代理的全路径类"></bean>
boild-water 2019-07-08
  • 打赏
  • 举报
回复
应该把你的spring aop注解开启代码 写在springmvc配置文件中,而不是写在spring配置文件中,spring和springmvc整合时,写在spring配置文件中扫描不到的。
chenjiecg 2016-08-26
  • 打赏
  • 举报
回复
引用 7 楼 Javainging 的回复:
[quote=引用 3 楼 chenjiecg 的回复:] spring.aop.proxy-target-class=true,加这个试试,AOP切action需要用CGLIB而不是JDK,默认是jdk的
<aop:aspectj-autoproxy proxy-target-class="true"/> 这刚看错了 不好意思,加了这个的确可以了,不过我不是很明白这是什么意思,能讲讲吗?谢谢。[/quote] http://my.oschina.net/huangyong/blog/161338
chenjiecg 2016-08-26
  • 打赏
  • 举报
回复
可以看看这个:http://www.ibm.com/developerworks/cn/java/j-lo-springaopcglib/ 大概就是:Spring AOP动态代理默认是选jdk的动态代理,切Action或者Controller需要用CGLIB来生成AOP代理。你如果是切service,那可以不加这个<aop:aspectj-autoproxy proxy-target-class="true"/>,这个设为true只是开启CGLIB代理
sweetException 2016-08-25
  • 打赏
  • 举报
回复
@Pointcut("把before里面的放在这") //然后加一个共有的空函数 public void method(){} @Before("method()") 这样试试
chenjiecg 2016-08-25
  • 打赏
  • 举报
回复
spring.aop.proxy-target-class=true,加这个试试,AOP切action需要用CGLIB而不是JDK,默认是jdk的
Java_er 2016-08-25
  • 打赏
  • 举报
回复
引用 1 楼 wlwlwlwl015 的回复:
有没有加这个配置 <aop:aspectj-autoproxy/> 作用就是打开基于Annotation的AOP
有 org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator 这个 就不需要加 <aop:aspectj-autoproxy/>了,加了也是一样 没反应
Java_er 2016-08-25
  • 打赏
  • 举报
回复
引用 3 楼 chenjiecg 的回复:
spring.aop.proxy-target-class=true,加这个试试,AOP切action需要用CGLIB而不是JDK,默认是jdk的
<aop:aspectj-autoproxy proxy-target-class="true"/> 这刚看错了 不好意思,加了这个的确可以了,不过我不是很明白这是什么意思,能讲讲吗?谢谢。
Java_er 2016-08-25
  • 打赏
  • 举报
回复
引用 3 楼 chenjiecg 的回复:
spring.aop.proxy-target-class=true,加这个试试,AOP切action需要用CGLIB而不是JDK,默认是jdk的
<aop:aspectj-autoproxy proxy-target-class="true"/> 这个加了也不行的
Java_er 2016-08-25
  • 打赏
  • 举报
回复
引用 4 楼 YQYnsmile 的回复:
@Pointcut("把before里面的放在这") //然后加一个共有的空函数 public void method(){} @Before("method()") 这样试试
跟这个应该没关系的
小灯光环 2016-08-24
  • 打赏
  • 举报
回复
有没有加这个配置 <aop:aspectj-autoproxy/> 作用就是打开基于Annotation的AOP
第1章:对Spring框架进行宏观性的概述,力图使读者建立起对Spring整体性的认识。   第2章:通过一个简单的例子展现开发Spring Web应用的整体过程,通过这个实例,读者可以快速跨入Spring Web应用的世界。   第3章:讲解Spring IoC容器的知识,通过具体的实例详细地讲解IoC概念。同时,对Spring框架的三个最重要的框架级接口进行了剖析,并对Bean的生命周期进行讲解。   第4章:讲解如何在Spring配置文件中使用Spring 3.0的Schema格式配置Bean的内容,并对各个配置项的意义进行了深入的说明。   第5章:对Spring容器进行解构,从内部探究Spring容器的体系结构和运行流程。此外,我们还将对Spring容器一些高级主题进行深入的阐述。   第6章:我们从Spring AOP的底层实现技术入手,一步步深入到Spring AOP的内核中,分析它的底层结构和具体实现。   第7章:对如何使用基于AspectJ配置AOP的知识进行了深入的分析,这包括使用XML Schema配置文件、使用注解进行配置等内容。   第8章:介绍了Spring所提供的DAO封装层,这包括Spring DAO的异常体系、数据访问模板等内容。   第9章:介绍了Spring事务管理的工作机制,通过XML、注解方式进行事务管理配置,同时还讲解了JTA事务配置知识。   第10章:对实际应用中Spring事务管理各种疑难问题进行透彻的剖析,让读者对Spring事务管理不再有云遮雾罩的感觉。   第11章:讲解了如何使用Spring JDBC进行数据访问操作,我们还重点讲述了LOB字段处理、主键产生和获取等难点知识。   第12章:讲解了如何在Spring中集成Hibernate、myBatis等数据访问框架,同时,读者还将学习到ORM框架的混用和DAO层设计的知识。   第13章:本章重点对在Spring中如何使用Quartz进行任务调度进行了讲解,同时还涉及了使用JDK Timer和JDK 5.0执行器的知识。   第14章:介绍Spring 3.0新增的OXM模块,同时对XML技术进行了整体的了解。   第15章:对Spring MVC框架进行详细介绍,对REST风格编程方式进行重点讲解,同时还对Spring 3.0的校验和格式化框架如果和Spring MVC整合进行讲解。   第16章:有别于一般书籍的单元测试内容,本书以当前最具实战的JUnit4+Unitils+ Mockito复合测试框架对如何测试数据库、Web的应用进行了深入的讲解。   第17章:以一个实际的项目为蓝本,带领读者从项目需求分析、项目设计、代码开发、单元测试直到应用部署经历整个实际项目的整体开发过程。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧