三大框架之Spring (初級學習 2)
阿新 • • 發佈:2019-01-04
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>