Spring for Plain old Java Applications (POJAs)

Most J2EE developers have at least heard of the Spring framework and know that it is an excellent framework for creating enterprise applications. I have recently needed to create an application that runs from the command line and is short lived. It has no GUI but I wanted it to be configurable and extendable in various ways. To that end, I defined a bunch of interfaces for the objects in the system to use when interfacing with other objects. Then I started thinking about the implementations of these interfaces and the factory classes I would need to create. I said to myself "Self, doesn't Spring already do this?" and I answered myself, "Why, yes". So I decided to try it.

The result is an extremly configurable application to which I can add or remove functionality with some minor configuration changes. I defined a bean that constituted the root object of the system. Here it is:

package com.dhptech.spring.poja;

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

/**
 * The main class for this application.  It is responsible for parsing the 
 * command line and controlling the action.
 * 
 * @author danap
 */
public abstract class SpringMain {
    public static final String NAME = "main";
    public static final String CONFIG_XML = "spring.xml";

    /**
     * process the arguments and execute the command.
     *
     * @param args the arguments.
     */
    public abstract int process(String[] args);
	
    /**
     * The main function for this application. Sets up the spring context
     * and dispatces the the main data distributor class.
     * 
     * @param args the command line arguments.
     * 
     * @return 0 if no errors occurr.
     */
    public static int main(String[] args) {
        try {
	    ApplicationContext ctx = new ClassPathXmlApplicationContext(CONFIG_XML);
            main main = (Main) ctx.getBean(NAME);
            return main.process(args);
        } catch( Throwable t ) {
            t.printStackTrace();
            return -1;
        }
    }
}


Create the spring.xml file with a bean named "main" that extends com.dhptech.spring.poja.Main. Pretty darn simple, huh?

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.