AOP使用和配置

AOP使用代码:

一、Dao层

 接口:AopTestDao

package com.sshcp.dao;

public interface AopTestDao {
	public void aopTest();
}

 实现类:AopTestDaoImpl

package com.sshcp.dao.impl;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;

import com.sshcp.dao.AopTestDao;

@Component("aopTestDao")
public class AopTestDaoImpl implements AopTestDao {
	
	public void aopTest() {
		// TODO Auto-generated method stub
		   System.out.println("dao 层 ");
	
	}
}

service层:

接口类:AopServiceI

package com.sshcp.service.aopi;

public interface AopServiceI {
	
	public void aopTestMothod();

}

 实现类:AopServiceImpl

package com.sshcp.service.aopi.impl;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;

import com.sshcp.dao.AopTestDao;
import com.sshcp.service.aopi.AopServiceI;

@Component("aopServiceI")
public class AopServiceImpl implements AopServiceI {
   
	private AopTestDao aopTestDao ;  // 注入dao层AopTestDao
	
	public AopTestDao getAopTestDao() {
		return aopTestDao;
	}
    
	@Resource
	public void setAopTestDao(AopTestDao aopTestDao) {
		this.aopTestDao = aopTestDao;
	}


	public void aopTestMothod() {
		// TODO Auto-generated method stub
   		System.out.println("aop test service here ");
      
	}

}

切面类:AspectTest

package com.sshcp.aspect;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@org.aspectj.lang.annotation.Aspect
@Component
public  class AspectTest {
     
	@Pointcut("execution(* com.sshcp.service.aopi.impl.AopServiceImpl.aop*(..)))")
	public void testMothod(){
	}
	
	@Before("testMothod()")
	public void beforeMothe(){
		System.out.println("121212121212121212 Before.......");
	}
	
	@After("testMothod()")
	public void afterMothe(){
		System.out.println("2323232323232323232 After........");
	}
}

Spring xml 中加入如下配置:

       <context:annotation-config />
       <aop:aspectj-autoproxy />
       <context:component-scan base-package="com.sshcp" />

测试代码:

package com.hibernate.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.sshcp.service.aopi.AopServiceI;

public class AopTest {
	
	@Test
	public void test(){
		ApplicationContext app = new ClassPathXmlApplicationContext("classpath:applicationContext-c3p0.xml");
		AopServiceI as = (AopServiceI)app.getBean("aopServiceI");
		as.aopTestMothod();
	}
}

测试打印出的信息:

121212121212121212 Before.......
aop test service here
2323232323232323232 After........

搞定

猜你喜欢

转载自xiaofengxbf.iteye.com/blog/1974416