spring--AOP--日志---demo1---bai

本文通过一个具体的示例介绍了面向切面编程(AOP)中日志记录的应用。示例包括实体类、接口、通知类及Spring配置文件等部分,并展示了如何在登录和注册方法中使用不同的AOP通知类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AOP日志DEMO1:

实体类:

package com.etc.entity;

import org.aspectj.lang.annotation.Pointcut;

public class User implements IUser 
{
	public static int NORMAL = 1;//普通用户角色
	public static int ADMIN = 2;    //管理员角色
	private int role;  //所属的角色
	
	public int getRole() {
		return role;
	}

	public void setRole(int role) {
		this.role = role;
	}

	
	public void login() {
		System.out.println("执行登录了!");
		
	}

	
	public void reg() {		
		System.out.println("执行注册了!");
	//throw new RuntimeException("注册过程发生异常!");
	}

}
================================================================
实体类需实现的接口:

package com.etc.entity;

//定义用户接口
public interface IUser 
{
	void login(); //登录
	void reg(); //注册
	
}
=================================================================
通知类:

package com.etc.advice;

import org.aspectj.lang.ProceedingJoinPoint;

//自定义通知类
public class MyAdvice 
{
	public  void beforelog()
	{
		System.out.println("这是前置通知的日志!");
	}
	
	public  void afterlog()
	{
		System.out.println("这是后置通知的日志!");
	}
	
	public  void aroundlog(ProceedingJoinPoint point) throws Throwable
	{
		System.out.println("这是环绕前通知的日志!");
		point.proceed();//原来代码的位置
		System.out.println("这是环绕后通知的日志!");
	}
	
	public void throwlog()
	{
		System.out.println("这是抛出异常后通知的日志");
	}

}
=================================================================
配置文件:

<?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:p="http://www.springframework.org/schema/p"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
  <!-- 定义1个业务类对象 -->
  <bean id="user" class="com.etc.entity.User">
    <property name="role" value="2"></property>
  </bean>
<!-- 定义1个通知类对象 -->
	<bean id="myadv" class="com.etc.advice.MyAdvice">
  	</bean>	
  <aop:config>
   <!-- 配置切点的集合、即切线 -->
     <aop:pointcut expression="execution(* com.etc.entity.User.*(..))" id="mypc"/>
   <!-- 配置切入的方向 ,即切面-->
   	  <aop:aspect ref="myadv">
   	     <!-- 前置通知 
   	  	<aop:before method="beforelog" pointcut-ref="mypc"/>
   	  	-->
   	  	 <!-- 后置通知
   	  	 <aop:after method="afterlog" pointcut-ref="mypc"/>
   	  	  -->
   	  	  <!-- 环绕通知 
   	  	  <aop:around method="aroundlog" pointcut-ref="mypc"/>
   	  	  -->
   	  	   <!-- 异常通知
   	  	  <aop:after-throwing method="throwlog" pointcut-ref="mypc"/>
   	  	    -->
   	  </aop:aspect>
  </aop:config>
  	
</beans>
===============================================
测试类:
package com.etc.test;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.etc.entity.IUser;

public class Test {
	public static void main(String[] args) 
	{
		BeanFactory fac = new ClassPathXmlApplicationContext("applicationContext.xml");		
		IUser u = (IUser) fac.getBean("user");
		
		//执行业务方法
		u.login();
		System.out.println("=====");
		
		try 
		{
			u.reg();
		} catch (Exception e) 
		{
			
		}
	}
}
======================================================================

  

转载于:https://www.cnblogs.com/ipetergo/p/6277359.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值