// archives

Spring Framework

This category contains 9 posts

Part 5: Web application development using AngularJS, Spring Boot and Maven – Support for eBird APIs, HTML 5 Geolocation and Google Geocoding

In my previous post, I completed the first phase of my Bird Log application. I can use this application to view my current sightings and add new sightings. I also implemented very basic support for content filtering. In this post, I am going to use eBird APIs to display current bird sightings reported on ebird.org, near my current location. I plan to use HTML5 Geolocation APIs to find out my current location automatically and then use Google Geocoding APIs to map my current Geographic coordinates (latitude and longitude) to a human-readable address. (more…)

Part 4 : Web application development using AngularJS, Spring Boot and Maven – BirdLog Application

In my previous posts (Part 1, Part 2 and Part 3), I developed a starter web application using AngularJS, Bootstrap, Spring Boot and Maven. In this post, I am going use this starter app to build the Bird Log app.

What is Bird Log?

The Bird Log is a simple web-based, Single Page Application (SPA), used to record my bird sightings.
This application:

  • Displays my recorded sightings in a tabular format
  • Supports sorting and filtering
  • Provides a way to log new sightings
  • Uses eBird APIs to find the latest bird sightings near my current location reported on eBird
  • Implements HTML5 Geocoding APIs to find my current location
  • Implements Google Geocoding APIs to map latitude/longitude to the location/address
  • Uses RESTful web services to interact with the server that handles the data (To keep it simple, data is stored in the memory for now)


Part 3 : Web application development using AngularJS, Spring Boot and Maven – Beautify using Bootstrap

In the previous post, I added AngularJS support to my base Spring Boot Application. In this post, I am going to integrate Bootstrap CSS and Javascript framework to make it pretty.

Configuring Bootstrap

  • Make sure that Bootstrap CSS and Javascript files are included in the application.
    Note: Bootstrap package was already downloaded using Bower. See the previous post for more details.

    <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css" >


    <script src="bower_components/jquery/dist/jquery.js"></script >
    <script src="bower_components/bootstrap/dist/js/bootstrap.js"></script >


Part 2 : Web application development using AngularJS, Spring Boot and Maven – Adding AngularJS support

In my previous post, I created a project for a simple web application using Spring Boot and Maven. I want to take it further and add AngularJS support to the setup.

I am an avid birder so I am going to develop a Bird Log app to log my bird sightings. Recently, I was introduced to AngularJS and have become a big fan of this framework. I am going to develop a Single Page Application (SPA) using AngularJS and Twitter Bootstrap Framework for HTML and CSS.


Part 1 : Web application development using AngularJS, Spring Boot and Maven – Setup

I have been using Spring Framework and Maven for my enterprise application development for long time now. I am a big fan of Spring Framework but a typical Maven and Spring based application requires a fair amount XML configuration to get started.

Along comes the new Spring initiative called Spring Boot that aims at accelerating application development. As per Spring Boot website, it takes an opinionated view of building production-ready Spring applications. Spring Boot favors convention over configuration and is designed to get you up and running as quickly as possible. You can use it to create stand-alone Java applications that can be started using ‘java -jar’ or more traditional WAR deployments. (more…)

How do you unit test your Data Access Layer?

Mock is not an option, I believe.

When I unit test my Data Access Layer (DAL), I really want to hit the database to ensure that I am executing correct SQL Queries against correct database schema. I have been using embedded (in-memory) databases like HSQL, H2 and Derby to unit test my Data Access Layer code.

Thanks to Spring 3, embedding databases in my unit tests is extremely straightforward. I just have to include the following lines in my application context:

	<jdbc:embedded-database id="dataSource">
    	<jdbc:script location="classpath:schema.sql"/>
    	<jdbc:script location="classpath:test-data.sql"/>

There are couple of problems with this approach though:

  • DDL supported by these embedded databases is not compatible with each other and with my production database (MySQL). I need to maintain 2 separate scripts, one for production and the other for my unit tests. Keeping these two scripts in sync is critical to make the unit test reliable.
  • The embedded databases may not support all the SQL standards that my production database supports. For example HSQLDB does not support AUTO_INCREMENT. I have to use the IDENTITY column instead. Also, HSQLDB doesn’t support MEDIUMTEXT and TEXT columns supported by MySQL.

I can use Hibernate to generate and populate database specific schema automatically. But what if I am not using Hibernate (like in my recent project)? Ideally, I would like to solve these issues by using the same database that I have in my Production environment – MySQL. A Java utility called MySQL Connector/MXJ can be used to address these problems.


How to integrate Spring Framework with a Struts2 application

Integrating Spring with your web application

Using Spring Framework facilitates good, extensible design by promoting interface driven programming, ease of testing through Inversion of Control and supporting various test frameworks and much more. Integrating Spring in a Struts2 based web application is a logical next step. In this post, we will integrate the Spring Framework in the Struts2 web application started in this post – Starting Struts2 web application development (using Maven2 and Eclipse)


How to add persistence to Struts2 + Spring application using JPA and Hibernate


In my previous post, How to integrate Spring Framework with a Struts2 application, I created a simple web application that used Struts2 and Spring. In this post, I am going to extend that application to add persistence logic using JPA (Java Persistence Architecture) and Hibernate.

I am assuming that you are already familiar with the technologies used in this post – Struts2, Spring and Hibernate.
My goal is to create a project that can be used to jumpstart a Struts2, Spring and Hibernate based development. This is not a detailed tutorial for these technologies.

My current development environment (at the time of developing this project) looks like this:

  • Maven: 2.2.1
  • Java: 1.6.0_20
  • Mac OS X 10.6.4
  • Struts: 2.1.8
  • Spring: 2.5.6
  • Hibernate: 3.4.0.GA


Create your own custom maven archetype

Creating custom maven archetype

Maven provides many archetypes to generate various types of project skeletons. This blog post explains how to create a custom archetype that is tailor-made for your own situation. We will create an archetype for the Struts2 application.
My current development environment includes:

  • Mac OS X 10.6.4
  • Maven 2.2.1
  • Java 1.6.0_20

Create your skeleton project

You need to have a starter project from which new archetype can be created. We can start with the Struts2 application created in the blog post Starting Struts2 web application development (using Maven2 and Eclipse) to create a custom archetype for Struts2 based applications. You can download the zipped source code for this project here.