spring 自定义bean初始化及析构方法

来源:互联网 发布:十二宫杀手解析知乎 编辑:程序博客网 时间:2024/06/06 09:27
package com.test.spring.beans;


import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class Cashier {


    private String name;
    private String path;
    private BufferedWriter writer;
    public Cashier() {
        System.out.println("*****");
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPath() {
        return path;
    }
    public void setPath(String path) {
        this.path = path;
    }
    
    public void openFile() throws FileNotFoundException {
        System.out.println("openfile--->");
        File logFile = new File(path, name + ".txt");
        writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(logFile, true)));
    }
    public void checkout(ShoppingCart cart) throws IOException {
        double total =0;
        for(Product product: cart.getItems()) {
            total += product.getPrice();
        }
        writer.write(new Date() + "\t" + total + "\r\n");
        writer.flush();
    }
    public void closeFile() throws IOException {
        System.out.println("close---->");
        writer.close();
    }
    public static void main(String args[]) throws IOException {
        ApplicationContext appContext = new ClassPathXmlApplicationContext(
                new String[] { "applicationContext.xml" });
        Cashier c = (Cashier) appContext.getBean("cashier");
        Product p = new Product("aa",11.1);
        List<Product> ps = new ArrayList<Product>();
        ps.add(p);
        ShoppingCart sc = new ShoppingCart();
        sc.setItems(ps);
        c.checkout(sc);
        System.out.println("checkout---->");
    }

}


是通过 init-mehod he destory-method参数指定,init-method指定的方法在构造函数之后执行

<bean id="cashier" class="com.test.spring.beans.Cashier" init-method="openFile" destroy-method="closeFile">
  
  <property name="name" value="cashier"/>
  <property name="path" value="D://"/>
</bean>

0 0
原创粉丝点击