大三學習進度44

2022-09-18 12:57:09 字數 1454 閱讀 9650

1. 建立專案

在 myeclipse 中建立乙個名稱為 springdemo03 的 web 專案,將 spring 支援和依賴的 jar 包複製到 web 專案的 web-inf/lib 目錄中,並發布到類路徑下。

2. 建立介面 customerdao

在專案的 src 目錄下建立乙個名為 com.mengma.dao 的包,在該包下建立乙個 customerdao 介面,編輯後如下所示。

package com.mengma.dao;

public inte***ce customerdao , new invocationhandler() {

public object invoke(object proxy, method method,

object args) throws throwable {

myaspect.mybefore(); // 前增強

object obj = method.invoke(customerdao, args);

myaspect.myafter(); // 後增強

return obj;

上述**中,定義了乙個靜態的 getbean() 方法,這裡模擬 spring 框架的 ioc 思想,通過呼叫 getbean() 方法建立例項,第 14 行**建立了 customerdao 例項。

第 16 行**建立的切面類例項用於呼叫切面類中相應的方法;第 18~26 行就是使用**類對建立的例項 customerdao 中的方法進行增強的**,其中 proxy 的 newproxyinstance() 方法的第乙個引數是當前類的類載入器,第二引數是所建立例項的實現類的介面,第三個引數就是需要增強的方法。

在目標類方法執行的前後,分別執行切面類中的 mybefore() 方法和 myafter() 方法。

6. 建立測試類 jdkproxytest

在 com.mengma.jdk 包下建立乙個名為 jdkproxytest 的測試類,如下所示。

package com.mengma.jdk;

import org.junit.test;

import com.mengma.dao.customerdao;

public class jdkproxytest {

@test

public void test() {

// 從工廠獲得指定的內容(相當於spring獲得,但此內容時**物件)

customerdao customerdao = mybeanfactory.getbean();

// 執行方法

customerdao.add();

customerdao.update();

customerdao.delete();

customerdao.find();

上述**中,在呼叫 getbean() 方法時,獲取的是 customerdao 類的**物件,然後呼叫了該物件中的方法。

大三學習進度67

sort 方法可以指定公升序或降序排序。sort 方法第乙個引數為要排序的字段,第二個字段指定排序規則,1為公升序,1為降序,預設為公升序。對欄位 alexa 按公升序排序 usr bin python3importpymongomyclient pymongo.mongoclient mongod...

大三學習進度50

建造者模式 builder pattern 使用多個簡單的物件一步一步構建成乙個複雜的物件。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。乙個 builder 類會一步一步構造最終的物件。該 builder 類是獨立於其他物件的。意圖 將乙個複雜的構建與其表示相分離,使得同樣的構...

大三學習進度45

spring 的事務管理是基於 aop 實現的,而 aop 是以方法為單位的。spring 的事務屬性分別為傳播行為 隔離級別 唯讀和超時屬性,這些屬性提供了事務應用的方法和描述策略。在 j a ee 開發經常採用的分層模式中,spring 的事務處理位於業務邏輯層,它提供了針對事務的解決方案。在 ...