Spring中的日志通知

19.1新建一个UserDao的接口;

package com.eduask.aop;

//新建一个USerDao的接口;

public interface UserDao {

void add();

void delete();

void update();

void query();

}

19.2新建一个UserDaoImpl的类实现UserDao;

package com.eduask.aop;

import org.springframework.stereotype.Repository;

@Repository

//新建一个UserDaoImpl实现UserDao接口;

public class UserDaoImpl implements UserDao{

@Override

public void add() {

// TODO Auto-generated method stub

System.out.println("this is add method");

}

@Override

public void delete() {

System.out.println("this is delete method");

}

@Override

public void update() {

System.out.println("this is update method");

}

@Override

public void query() {

System.out.println("this is query method");

}

}

19.3 新建一个UserService的接口;

package com.eduask.aop;

//新建一个UserService的接口;

public interface UserService {

void add();

void delete();

void update();

void query();

}

19.4 新建一个UserServiceImpl类实现UserService

package com.eduask.aop;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

@Service

public class UserServiceImpl implements UserService {

@Resource(name="userDaoImpl")

private UserDao userDao;

@Override

public void add() {

userDao.add();

}

@Override

public void delete() {

// TODO Auto-generated method stub

userDao.delete();

}

@Override

public void update() {

// TODO Auto-generated method stub

userDao.update();

}

@Override

public void query() {

// TODO Auto-generated method stub

userDao.query();

}

}

19.5 新建一个日志通知;

package com.eduask.aop;

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.springframework.stereotype.Component;

@Aspect

@Component

public class LogAspect {

/*@Before("execution(* com.ask.aop.UserServiceImpl.*(..))")

public void before(){

System.out.println("前置通知");

}

@After("execution(* com.ask.aop.UserServiceImpl.*(..))")

public void after(){

System.out.println("后置通知");

}

@AfterReturning("execution(* com.ask.aop.UserServiceImpl.*(..))")

public void afterReturn(){

System.out.println("返回通知");

}

@AfterThrowing("execution(* com.ask.aop.UserServiceImpl.*(..))")

public void afterThrow(){

System.out.println("异常通知");

}*/

@Around("execution(* com.eduask.aop.UserServiceImpl.*(..))")

public void around(ProceedingJoinPoint joinPoint){

System.out.println(joinPoint.getSignature().getName());

try {

System.out.println("前置通知");

joinPoint.proceed();

System.out.println("后置通知");

} catch (Throwable e) {

System.out.println("异常通知"+e);

}

System.out.println("返回通知");

}

}

19.6新建一个TestUserDao类;

package com.eduask.aop;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestUserDao {

public static void main(String[] args) {

ClassPathXmlApplicationContext ac=new ClassPathXmlApplicationContext("aopBean.xml");

UserService service=(UserService) ac.getBean("userServiceImpl");

service.add();

service.delete();

service.update();

service.query();

}

}

19.7 新建一个aopBean.xml的配置文件;

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:util="http://www.springframework.org/schema/util"

xmlns:aop="http://www.springframework.org/schema/aop"

xsi:schemaLocation="http://www.springframework.org/schema/beans

    http://www.springframework.org/schema/beans/spring-beans.xsd

    http://www.springframework.org/schema/context

    http://www.springframework.org/schema/context/spring-context-4.0.xsd

    http://www.springframework.org/schema/util

    http://www.springframework.org/schema/util/spring-util-4.0.xsd

    http://www.springframework.org/schema/aop

    http://www.springframework.org/schema/aop/spring-aop-4.0.xsd

    ">

<context:annotation-config/>

<context:component-scan base-package="com.eduask.aop"/>

<aop:aspectj-autoproxy/>

</beans>

19.8 程序运行如下:

2016-6-28 22:31:29 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@593d93f4: startup date [Tue Jun 28 22:31:29 GMT+08:00 2016]; root of context hierarchy
2016-6-28 22:31:30 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [aopBean.xml]
add
前置通知
this is add method
后置通知
返回通知
delete
前置通知
this is delete method
后置通知
返回通知
update
前置通知
this is update method
后置通知
返回通知
query
前置通知
this is query method
后置通知
返回通知

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值