天天看點

spring 自定義bean初始化及析構方法

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>