1.在xml中需要配置自动代理


/**
*
*/
package com.junge.demo.spring.dao; import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy; import com.junge.demo.spring.advice.MyLogImpl; /**
* @author Administrator
*
*/
@Configuration
@ComponentScan(basePackageClasses= {MyLogImpl.class,UserDao.class})
@EnableAspectJAutoProxy
public class DaoConfig { }

2.java类需要添加@Aspect注解。

package com.junge.demo.spring.advice;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component; import com.alibaba.fastjson.JSONObject; @Component("myLog")
@Aspect
public class MyLogImpl { @Pointcut("execution(* com.junge.demo.spring.dao..*(..))")
public void pointcut() { } @Before("pointcut()")
public void beforeFunc() {
System.out.println("beforeFunc ..."); } @After("pointcut()")
public void afterFunc() {
System.out.println("afterFunc ..."); } @AfterReturning("pointcut()")
public void returnFunc() {
System.out.println("returnFunc ..."); } @AfterThrowing(pointcut="pointcut()", throwing="e")
public void throwExpFunc(Exception e) {
System.out.println("throwExpFunc ...");
System.out.println(e.getMessage()); } @Around("pointcut()")
public void aroundFunc(ProceedingJoinPoint point) {
System.out.println("arount before invoke ..."); if (null != point.getArgs() && point.getArgs().length > 0) {
for (Object arg : point.getArgs()) {
System.out.println("around args:" + JSONObject.toJSON(arg));
}
}
System.out.println(point.getTarget());
System.out.println(point.getThis());
System.out.println(point.getKind());
System.err.println(point.getClass());
System.out.println(point.getSignature()); try {
Object result = point.proceed();
System.out.println("around result:" + JSONObject.toJSONString(result));
System.out.println("around after return ...");
} catch (Throwable e) {
System.out.println("around after throws ...");
} System.out.println("around after ..."); } }

3.运行结果

/**
*
*/
package com.junge.demo.spring; import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import com.junge.demo.spring.dao.DaoConfig;
import com.junge.demo.spring.dao.UserDao;
import com.junge.demo.spring.dao.impl.cc.dd.ff.ee.SubClassTest;
import com.junge.demo.spring.service.IPerface;
import com.junge.demo.spring.service.ServiceConfig; /**
* @author Administrator
*
*/
public class ServiceConfigApp { private static ApplicationContext applicationContext; /**
* @param args
*/
public static void main(String[] args) {
applicationContext = new AnnotationConfigApplicationContext(ServiceConfig.class, DaoConfig.class);
// System.out.println(applicationContext.getBeansOfType(IPerface.class));
// applicationContext.getBean(UserDao.class); applicationContext.getBean(SubClassTest.class).addTest(3, 1);
} }

Spring 使用javaconfig配置aop的更多相关文章

  1. Spring 使用javaconfig配置

    除了使用xml,spring提供javaconfig配置,下面是简单的例子: 1.声明接口 /** * */ package com.junge.demo.spring.service; /** * ...

  2. Spring 使用xml配置aop

    1.xml文件需要引入aop命名空间 2.xml内容: <?xml version="1.0" encoding="UTF-8"?> <bea ...

  3. Spring、XML配置AOP

    新建一个AOP类: public class MyInterceptor2 { public void doAccessCheck(){ System.out.println("前置通知 & ...

  4. Spring实战(十一) 在Spring XML中配置AOP

    如果你没有源码,不能为通知类添加注解,又不想将AspectJ注解放入到你的代码中,必须选择XML配置了. 1.Spring XML配置文件 解析参考:http://www.cnblogs.com/bi ...

  5. Spring基于注解配置AOP

    D:\Java\IdeaProjects\JavaProj\SpringHelloWorld\src\aop.xml <?xml version="1.0" encoding ...

  6. Spring基于XML配置AOP

    目录结构: D:\Java\IdeaProjects\JavaProj\SpringHelloWorld\src\cn\edu\bjut\service\StudentService.java pac ...

  7. spring mvc:练习:javaConfig配置和注解

    Spring4 MVC HelloWorld 注释/JavaConfig为示例,一步一步以简单的方式学习Spring4 MVC 的注解,项目设置,代码,部署和运行. 我们已经使用XML配置开发了一个H ...

  8. Spring学习记录(十三)---基于xml文件配置AOP

    上一篇讲了用注解配置AOP,现在讲用xml怎么配置AOP 其实逻辑是一样的,只是用xml的方法,要把这种逻辑写出来,告诉spring框架去执行. 例子:这里的例子和上一篇的例子一样.换成xml方式 / ...

  9. Spring配置AOP实现定义切入点和织入增强

    XML里的id=””记得全小写 经过AOP的配置后,可以切入日志功能.访问切入.事务管理.性能监测等功能. 首先实现这个织入增强需要的jar包,除了常用的 com.springsource.org.a ...

随机推荐

  1. jsp jstl quote symbol expected

    org.apache.jasper.JasperException: /WEB-INF/jsp/user/index.jsp (line: 2, column: 27) quote symbol ex ...

  2. PyCharm下的pywin32安装及使用

    转载http://www.mamicode.com/info-detail-2145088.html

  3. Web框架本质及第一个Django实例 Web框架

    Web框架本质及第一个Django实例   Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web ...

  4. python abc模块

    面向对象的设计中,抽象类,接口这些必不可少的东西,在python中是如何提现的呢? python作为一个动态语言,没有强类型的检查,而是以鸭子类型的方式提现,在执行的时候python不严格要求你必须是 ...

  5. jq动画分析1

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. Mac 笔记本 开发日记

    1.录屏,截图 Mac 自带录屏功能 command +control +o 2.复制当前应用,在启一个当前app窗口 command+n 3.快速回到桌面 command +f3 4.选中文件,复制 ...

  7. html背景图星际导航图练习

    html <body>         <div class="box1">            <div></div>      ...

  8. FTRL的理解

    https://blog.csdn.net/ningyanggege/article/details/81133785

  9. Redis在linux上的配置

    一.安装gcc  1.Redis在linux上的安装首先必须先安装gcc,这个是用来编译redis的源文件的.首先需要先切换的到root用户 2.然后开始安装gcc: yum install gcc- ...

  10. git-如何不写注释能自动带上修改文件信息

    背景:每次提交git,都要写注释,有些情况注释不太好写,或者根本没有必要写,这时可以通过自动加注释方法,比如可以追加修改了哪些文件 解决:通过shell脚本,在脚本里面写git命令,add commi ...