學習spring事務模板

通過學習spring事務模板:
提供服務者可以要求客戶端調用時實現第三方接口,該接口實現會在服務者提供服務時調用,完成服務方回調客戶段代碼。而在接口實

現參數可以充當服務方提供給客戶端額外的功能。

例如:
1:服務方爲TransactionTemplate.execute,這個方法提供事務管理功能。
2:而客戶端會依照服務方實現TransactionCallback這個第三方接口,實現doInTransaction(TransactionStatus status)這個方法。3:在TransactionTemplate提供事務功能時,又調用了客戶端實現的TransactionCallback接口的方法,即具體的業務邏輯。
4:接口實現傳入了TransactionStatus對象,客戶端實現的具體業務中,會用到事務回滾這個服務方提供的額外的功能。
5:客戶端實現回調代碼通常使用匿名類實現,代碼比較簡單。

 

/**
 * 匿名內部類
 *
 * 所謂的匿名就是該類連名字都沒有,只是顯示地調用一個無參的父類的構造方法。
 *
 * @author 75-qj
 * @version $Id: A.java, v 0.1 2009-12-28 下午05:27:32 75-qj Exp $
 */
public class A {
   
    private Frame     f;
    private TextField tf;

    public A() {
        f = new Frame("aa");
        tf = new TextField(30);
    }

    public void launchFrame() {
        Label label = new Label("Click and drag the mouse");
        f.add(label, BorderLayout.NORTH);
        f.add(tf, BorderLayout.SOUTH);

        f.addMouseMotionListener(new MouseMotionAdapter() { //匿名類開始
                public void mouseDragged(MouseEvent e) {
                    String s = "Mouse dragging: x=" + e.getX() + "Y=" + e.getY();
                    tf.setText(s);
                }
            }); //匿名類結束
        f.setSize(300, 200);
        f.setVisible(true);
    }
}

 

 

/**
 * 內部類
 *
 * 一個內部類的對象可訪問外部類的成員方法和變量,包括私有的成員。即內部類實例對包含它的哪個類的實例來說,是特權的。
 * 對於同一個包中的其他類來說,內部類能夠隱藏起來,換句話說,內部類不管方法的可見性如何,
 * 那怕是public,除了包容類,其他類都無法使用它。
 *
 * @author 75-qj
 * @version $Id: InnerClass.java, v 0.1 2009-12-28 下午05:27:20 75-qj Exp $
 */
public class InnerClass{
    private Frame f;
    private TextField tf;
    public InnerClass(){
    f=new Frame("Inner classes example");
    tf=new TextField(30);
    }
   
    public void launchFrame() {
        Label label = new Label("Click and drag the mouse");
        f.add(label, BorderLayout.NORTH);
        f.add(tf, BorderLayout.SOUTH);
        f.addMouseMotionListener(new MyMouseMotionListener());/*參數爲內部類對象*/
        f.setSize(300, 200);
        f.setVisible(true);
    }

    class MyMouseMotionListener extends MouseMotionAdapter { /*內部類開始*/
        public void mouseDragged(MouseEvent e) {
            String s = "Mouse dragging: x=" + e.getX() + "Y=" + e.getY();
            tf.setText(s);
        }
    };

    public static void main(String args[]) {
        InnerClass obj = new InnerClass();
        obj.launchFrame();
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章