1. 程式人生 > >三大框架之Spring (初級學習 2)

三大框架之Spring (初級學習 2)

1. AOP

     * AOP:Aspect Oriented Programming,面向切面程式設計
     *   
     * 在日誌和異常處理方面很常用
     * 
     * 新加入了   3 個包:
     *  Spring :aop,aspects,
     *  AspectJ :aspectjweaver */

2. 在不修改原有程式碼的基礎上增加新的功能,通過配置檔案,切換不同的功能

    com.zhiyou100.dao.UserDaoOracleImpl 》》》 com.zhiyou100.dao.UserDaoMysqlImpl

2 . 專案 截圖:

這裡寫圖片描述

3 . 配置檔案: 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:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- <bean name="mysql" class="com.zhiyou100.dao.UserDaoMySqlImpl"></bean> <bean name="oracle" class="com.zhiyou100.dao.UserDaoOracleImpl"></bean> <bean name="service" class="com.zhiyou100.service.UserServiceImpl"> <property name="dao" ref="mysql"></property> </bean> -->
<bean name="dao" class="com.zhiyou100.dao.UserDaoOracleImpl"></bean> <bean name="service" autowire="byName" class="com.zhiyou100.service.UserServiceImpl"></bean> <bean name="myAspects" class="com.zhiyou100.aop.MyAspects"></bean> <aop:config> <aop:aspect ref="myAspects"> <aop:before method="beforeLog" pointcut="execution(public void com.zhiyou100.service.UserServiceImpl.pay())" /> <aop:after method="afterLog" pointcut="execution(* com..UserServiceImpl.pay())" /> <!-- 切入點: before:方法執行前,=== 引數校驗 after:方法執行後,無論是否產生異常 === 清理資源 after-returing:方法正常執行完畢 === 修改返回值 after-throwing:方法丟擲異常 === 包裝異常資訊 around:方法執行前後兩個點 --> <!-- pointcut:切入點表示式 execution(修飾符 返回值 包名.類名.方法名(引數型別)) 修飾符:可以省略 返回值:不能省略,可以使用 * 代替 包名:com 不能省,可以使用 * 代替, 中間的包名也可以使用 * 代替,如果想省略需要寫 .. 代替 類名,方法名:不能省略,可以使用 * 代替 引數:如果只有一個引數可以使用 * 代替,如果有多個引數可以使用 .. 代替 --> </aop:aspect> </aop:config> </beans>