Spring Java

/*
Pro Spring
By Rob Harrop
Jan Machacek
ISBN: 1-59059-461-4
Publisher: Apress
*/
///////////////////////////////////////////////////////////////////////////////////////
//File: disposeInterface.xml


    
        
            c:/test.txt
        
    

///////////////////////////////////////////////////////////////////////////////////////
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
public class ShutdownHook implements Runnable {
    private ConfigurableListableBeanFactory factory;
    
    public ShutdownHook(ConfigurableListableBeanFactory factory) {
        this.factory = factory;
    }
    
    public void run() {
        System.out.println("Destroying Singletons");
        factory.destroySingletons();
        System.out.println("Singletons Destroyed");
    }
    
}
///////////////////////////////////////////////////////////////////////////////////////
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
public class DestructiveBeanWithInterface implements InitializingBean,
        DisposableBean {
    private InputStream is = null;
    public String filePath = null;
    public void afterPropertiesSet() throws Exception {
        System.out.println("Initializing Bean");
        if (filePath == null) {
            throw new IllegalArgumentException(
                    "You must specify the filePath property of " + DestructiveBean.class);
        }
        is = new FileInputStream(filePath);
    }
    public void destroy() {
        System.out.println("Destroying Bean");
        if (is != null) {
            try {
                is.close();
                is = null;
            } catch (IOException ex) {
                System.err.println("WARN: An IOException occured"
                        + " trying to close the InputStream");
            }
        }
    }
    public void setFilePath(String filePath) {
        this.filePath = filePath;
    }
    public static void main(String[] args) throws Exception {
        ConfigurableListableBeanFactory factory = new XmlBeanFactory(
                new FileSystemResource(
                        "build/disposeInterface.xml"));
        DestructiveBeanWithInterface bean = (DestructiveBeanWithInterface) factory.getBean("destructiveBean");
        System.out.println("Calling destroySingletons()");
        factory.destroySingletons();
        System.out.println("Called destroySingletons()");
    }
}
///////////////////////////////////////////////////////////////////////////////////////
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
public class DestructiveBean implements InitializingBean {
    private InputStream is = null;
    public String filePath = null;
    public void afterPropertiesSet() throws Exception {
        System.out.println("Initializing Bean");
        if (filePath == null) {
            throw new IllegalArgumentException(
                    "You must specify the filePath property of " + DestructiveBean.class);
        }
        is = new FileInputStream(filePath);
    }
    public void destroy() {
        System.out.println("Destroying Bean");
        if (is != null) {
            try {
                is.close();
                is = null;
            } catch (IOException ex) {
                System.err.println("WARN: An IOException occured"
                        + " trying to close the InputStream");
            }
        }
    }
    public void setFilePath(String filePath) {
        this.filePath = filePath;
    }
 
}
///////////////////////////////////////////////////////////////////////////////////////
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
public class ShutdownHookExample {
    public static void main(String[] args) {
        ConfigurableListableBeanFactory factory = new XmlBeanFactory(
                new FileSystemResource(
                        "build/disposeInterface.xml"));
        Runtime.getRuntime().addShutdownHook(
                new Thread(new ShutdownHook(factory)));
        DestructiveBeanWithInterface bean = (DestructiveBeanWithInterface) factory.getBean("destructiveBean");
    }
}
           
       
ShutdownHookExample.zip( 1,201 k)