1. 程式人生 > >AOP的三種程式設計模式(第三種)

AOP的三種程式設計模式(第三種)

 註解完成AOP程式設計applicationContext.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: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
        ">
    
        	<!-- 掃描spring的註解 -->
        	<context:component-scan base-package="com.qhit.aop3"></context:component-scan>
            <!-- 掃描AOP的註解 -->
            <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
</beans>
package com.qhit.aop3;

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

/*
 * 註解完成AOP程式設計
 * 切面
 * */
@Component //將物件交給一個IOC容器
@Aspect  //切面註解
public class Aop3 {
	    //切點
		@Pointcut("execution(* com.qhit.aop3.*.*(..))")    //說明切點
		public void pointcut(){}
		@Before("pointcut()")
		public void begin(){
			System.out.println("使用者開始登陸。。");
		}
		@After("pointcut()") //出現異常就停止執行
		//@AfterReturning("pointcut()") 出現異常繼續執行
		public void end(){
			System.out.println("使用者已經下線。。");
		}
}

介面
package com.qhit.aop3;

public interface UserDao {
	void login();
}

繼承介面
package com.qhit.aop3;

import org.springframework.stereotype.Component;

@Component
public class User implements UserDao{
	//切點
	
	@Override
	public void login() {
		System.out.println("登陸成功。。");
		
	}

}

測試類
package com.qhit.aop3;

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

public class Test {
	public static void main(String[] args) {
		ApplicationContext context=new ClassPathXmlApplicationContext("/com/qhit/aop3/applicationContext.xml");
		UserDao u=(UserDao) context.getBean("user");
		u.login();
	}
}