spring学习笔记SpringAopAspect
来源:互联网 发布:ant打包java配置文件 编辑:程序博客网 时间:2024/06/16 09:08
SpringAopAspectJTest_applicationContext.xml
package com.lin.test.aspectj;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
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.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;
/*******************************************************************************
* SpringAopAspectJTest.java Created on 2014年7月23日
* Author: linfenliang
* Description:
* Version: 1.0
******************************************************************************/
public class SpringAopAspectJTest {
ApplicationContext context = new ClassPathXmlApplicationContext("SpringAopAspectJTest_applicationContext.xml");
@Test
public void test() {
AspectJUserDao dao = new AspectJUserDaoImpl();
dao = (AspectJUserDao) context.getBean("aspectJUserDaoImpl");
//dao.userLogin("linfenliang", "123456");
dao.queryUsers("dragon","666666");
}
}
interface AspectJUserDao{
public void userLogin(String username,String password);
public Users queryUsers(String username,String password);
}
class AspectJUserDaoImpl implements AspectJUserDao{
@Override
public void userLogin(String username, String password) {
System.out.println("username:".concat(username).concat(",password:").concat(password));
}
@Override
public Users queryUsers(String username,String password) {
Users u = new Users();
u.setUsername(username);
u.setPassword(password);
u.setAddress("China");
System.out.println(u);
//if(u!=null){
//throw new RuntimeException();
//}
return u;
}
}
@Aspect
@Component
class AspectJUserDaoProxy{
/**
* 定义切入点
*
* void
* @author linfenliang
* @date 2014年7月24日 上午10:58:28
*/
@Pointcut("execution(* com.lin.test.aspectj.AspectJUserDaoImpl.*(..)) && args(username,password)")
void filter(String username,String password){};
@Pointcut("execution(* com.lin.test.aspectj.AspectJUserDaoImpl.*(..))")
void filter2(){};
/**
* 前置通知
*
* void
* @author linfenliang
* @date 2014年7月24日 上午10:56:13
*/
@Before(value="filter(username,password)")
private void checkParamsValid(String username,String password){
System.out.println("ready to check paramters."+username+","+password);
}
@AfterReturning(value="filter2()",returning="users")
private void checkResultValid(Users users){
System.out.println("check result ."+users);
}
@AfterThrowing(pointcut="filter2()",throwing="e")
private void catchException(Throwable e){
System.out.println("exceptionNotice:" +e);
}
@After(value="filter2()")
private void releaseResources(){
System.out.println("release ");
}
@Around(value="filter2()")
private void aroundMethod(ProceedingJoinPoint pjp) throws Throwable{
System.out.println("pjp.proceed() start");
pjp.proceed();
System.out.println("pjp.proceed() end");
}
}
class Users{
private String username;
private String password;
private String address;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return ReflectionToStringBuilder.toString(this);
}
}
<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:context="http://www.springframework.org/schema/context"
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.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 启用注解方式注入 -->
<context:annotation-config/>
<!-- 启用自动代理 -->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
<!-- 注解扫描路径 -->
<context:component-scan base-package="com.lin.test.aspectj" />
<bean id="aspectJUserDaoImpl" class="com.lin.test.aspectj.AspectJUserDaoImpl"></bean>
</beans>
- spring学习笔记SpringAopAspect
- spring gossip(spring 学习笔记)
- spring学习笔记: Spring AOP
- spring学习笔记: Spring Jdbc
- spring学习笔记:spring事务管理
- spring学习笔记:spring事务管理
- spring学习笔记:spring controller
- spring学习笔记:spring事务管理
- Spring 学习笔记:浅谈 Spring
- spring学习笔记: Spring AOP
- Spring学习笔记-Spring容器
- Spring学习笔记 - Spring Data
- Spring学习笔记-Spring Cache
- Spring学习笔记 - Spring Boot
- Spring学习笔记: Spring概述
- Spring 学习笔记
- Spring学习笔记
- Spring AOP学习笔记
- HDU 5806 NanoApe Loves Sequence
- 打码软件的安装和配置
- 第三方开源库:下拉刷新和上拉加载更多:PullLoadMoreRecyclerView + CommonPullToRefresh + SpringView+。。。
- 【C#总结】--颗粒归仓
- 有效回文串
- spring学习笔记SpringAopAspect
- spring学习笔记SpringJdbc
- spring学习笔记cglib
- spring学习笔记注解(部分)
- spring学习笔记aopproxy
- spring学习笔记工厂模式
- iOS逆向 — 逆向微信,透视聊天背景
- maven在eclipse中自动化远程发布
- jQuery Mobile页面跳转后未加载JS解决办法