Skip to main content

Progressively building a modular Spring Web applications

This is going to be a series of posts in which I will try to demonstrate how to build a complex modular Spring web application. We will use progressive enhancement to slowly improve and build this application. So what are we going to build? OK here is a small set of requirement we will try to cater :

Requirements

  1. Sign in user
  2. Sign out user
  3. Create a lead
  4. Edit lead
  5. List lead
  6. Copy lead
  7. View History of lead changes
  8. Send mails to these leads as part of some camapign
  9. Delete lead

Some non functional requirements I will look into are:

  1. Modular application module - so that it should seamlessly include a new module. Lets say tomorrow we want to include an opportunity module it should work by dropping in a jar with views, navigation, menu items, context menu etc - just with server restart.
  2. Must be able to support NoSQL stores with minimal changes.

I have generally selected the following as my tool and technologies:

  1. Spring Framework 3.1.2 - core framework
  2. Spring DATA - For data access
  3. Thymeleaf for templates - sorry I will not use JSF 2 and rich UI frameworks like Primefaces, Richfaces etc. They are awesome, but I would love to have more control and flexibility with my UI. Also JSF 2 even with nicities and improvements has lot to learn.
  4. Spring Web flow 2.3.x ---- will try to implement if does not hamper my modular requirements
  5. Spring Security
  6. Spring Integration
  7. Spring Social
  8. Tomcat 7 - Server
  9. Spring Source Toolsuite --- IDE
  10. Maven - Build tool

So far so good, we will add or update things as per feedback and if required.

The project will be available on some Google code repository soon. I will tag it as I go along.

 

Comments

Popular posts from this blog

Part 3 - Integrating Tiles, Thymeleaf and Spring MVC 3

In this post I will demonstrate how to integrate Apache Tiles with Thymeleaf. This is very simple. The first step is to include the tiles and thymeleaf-tiles extension dependencies. I will include them in the pom.xml. Note we wil lbe using Tiles 2.2.2 Listing 1 - parent/pom.xml --- thymeleaf-tiles and tiles dependencies <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <!-- Tiles --> <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-core</artifactId> <version>${tiles.version}</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-template</artifactId> <version>${tiles.version}</version> <scope>compile</s...

Getting started with Prime faces 2

Prime faces is an amazing JSF framework from Cagatay Civici ( http://cagataycivici.wordpress.com/ ). Its wonderful because it is easy to use, minimal dependencies, has probably the widest set of controls among all JSF frameworks, easy to integrate with Spring (including Spring Security) , Java EE EJBs, and last but not the least mobile UI support. So I decided to give Prime faces a try, before selecting it to use in my projects. Step 1 – Create Maven 2 project As a first step to integrating Prime faces, create a Maven 2 project in Eclipse. You will need to select ‘maven-archetype-webapp’. Step 2 – Add repositories and dependencies in pom.xml I will be using Prime faces 2 with JSF 2 on Tomcat 6. Since the dependencies for Prime Faces and JSF 2 (JSF 2.0.3 is required) are available on different repositories, I will add them to my pom file first. The listing below shows my pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/X...

CKEDITOR 3.x - Simplest Ajax Submit Plugin

  I have assumed that you have downloaded and got started with CKEDITOR. Step 1 – The html file is shown below: <html> <head> <title>Writer</title> <meta content="text/html; charset=utf-8" http-equiv="content-type" /> <script type="text/javascript" src="ckeditor/ckeditor.js"></script> <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script> <style> .cke_contents { height: 400px !important; } </style> </head> <body> <form action="sample_posteddata.php" method="post"> <textarea id="editor" > </textarea> <script type="text/javascript"> //<![CDATA[ CKEDITOR.replace( 'editor', { fullPage : true, uiColor : '#9AB8F3', toolbar : 'MyToolbar' }); //]]> </script> </form> </body> </html> Note that the jquery js...