学习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();
    }
}

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