首页 > 其他分享 >sprint AOP方法执行前、执行后、抛出异常,环绕通知等

sprint AOP方法执行前、执行后、抛出异常,环绕通知等

时间:2022-11-20 16:03:44浏览次数:45  
标签:www spring void springframework AOP org sprint 执行 public


参考文章:https://www.yiibai.com/spring/spring-aop-examples-advice.html

执行customerService之前执行一段HijackBeforeMethod中方法


customerService:

package com.crud.spring.service;

public class CustomerService {
private String name;
private String url;

public void setName(String name) {
this.name = name;
}

public void setUrl(String url) {
this.url = url;
}

public void printName() {
System.out.println("Customer name : " + this.name);
}

public void printURL() {
System.out.println("Customer website : " + this.url);
}

public void printThrowException() {
throw new IllegalArgumentException();
}

}


HijackBeforeMethod 

(实现接口MethodBeforeAdvice,

如果是执行customerService之后执行,实现接口AfterReturningAdvice):

package com.crud.spring.aop;

import java.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;

public class HijackBeforeMethod implements MethodBeforeAdvice
{
@Override
public void before(Method method, Object[] args, Object target)
throws Throwable {
System.out.println("HijackBeforeMethod : Before method hijacked!");
}
}


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"
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.xsd">

<bean id="customerService" class="com.crud.spring.service.CustomerService">
<property name="name" value=" YiiBaii Mook Kim"></property>
<property name="url" value=" http://www.yiibai.com"></property>
</bean>

<bean id="hijackBeforeMethodBean" class="com.crud.spring.aop.HijackBeforeMethod" />

<bean id="customerServiceProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="target" ref="customerService" />
<property name="interceptorNames">
<list>
<value>hijackBeforeMethodBean</value>
</list>
</property>
</bean>

</beans>



测试:

package com.crud.spring.test;

import com.crud.spring.service.CustomerService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
public static void main(String[] args) {

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
CustomerService cust = (CustomerService) applicationContext.getBean("customerServiceProxy");

System.out.println("*************************");
cust.printName();
System.out.println("*************************");
cust.printURL();
System.out.println("*************************");
try {
cust.printThrowException();
} catch (Exception e) {

}

}
}



标签:www,spring,void,springframework,AOP,org,sprint,执行,public
From: https://blog.51cto.com/u_15882671/5871551

相关文章