Advanced Java:
Prior to the advent of Enterprise Java Beans (EJB), Java developers needed to use JavaBeans to create
Web applications. Although JavaBeans helped in the development of user interface (UI) components,
they were not able to provide services, such as transaction management and security, which were
required for developing robust and secure enterprise applications. The advent of EJB was seen as a
solution to this problem EJB extends the Java components, such as Web and enterprise components,
and provides services that help in enterprise application development. However, developing an
enterprise application with EJB was not easy, as the developer needed to perform various tasks, such
as creating Home and Remote interfaces and implementing lifecycle callback methods which lead to
the complexity of providing code for EJBs Due to this complication, developers started looking for an
easier way to develop enterprise applications.
The Spring framework(which is commonly known as Spring) has emerged as a solution to all these
complications This framework uses various new techniques such as Aspect-Oriented Programming
(AOP), Plain Old Java Object (POJO), and dependency injection (DI), to develop enterprise
applications, thereby removing the complexities involved while developing enterprise applications
using EJB, Spring is an open source lightweight framework that allows Java EE 7 developers to build
simple, reliable, and scalable enterprise applications. This framework mainly focuses on providing
various ways to help you manage your business objects. It made the development of Web
applications much easier as compared to classic Java frameworks and Application Programming
Interfaces (APIs), such as Java database connectivity(JDBC), JavaServer Pages(JSP), and Java Servlet.
The Spring framework can be considered as a collection of sub-frameworks, also called layers, such
as Spring AOP. Spring Object-Relational Mapping (Spring ORM). Spring Web Flow, and Spring Web
MVC. It is a lightweight application framework used for developing enterprise applications. You can
use any of these modules separately while constructing a Web application. The modules may also be
grouped together to provide better functionalities in a Web application. Spring framework is loosely
coupled because of dependency Injection.
Features of the Spring Framework
The features of the Spring framework such as IoC, AOP, and transaction management, make it unique
among the list of frameworks. Some of the most important features of the Spring framework are as
follows:
IoC container:
Refers to the core container that uses the DI or IoC pattern to implicitly provide an object
reference in a class during runtime. This pattern acts as an alternative to the service locator
pattern. The IoC container contains assembler code that handles the configuration
management of application objects.
The Spring framework provides two packages, namely org.springframework.beans and
org.springframework.context which helps in providing the functionality of the IoC container.
Data access framework:
Allows the developers to use persistence APIs, such as JDBC and Hibernate, for storing
persistence data in database. It helps in solving various problems of the developer, such as
how to interact with a database connection, how to make sure that the connection is closed,
how to deal with exceptions, and how to implement transaction management It also enables
the developers to easily write code to access the persistence data throughout the
application.
Spring MVC framework:
Allows you to build Web applications based on MVC architecture. All the requests made by a
user first go through the controller and are then dispatched to different views, that is, to
different JSP pages or Servlets. The form handling and form validating features of the Spring
MVC framework can be easily integrated with all popular view technologies such as ISP,
Jasper Report, FreeMarker, and Velocity.
Transaction management:
Helps in handling transaction management of an application without affecting its code. This
framework provides Java Transaction API (JTA) for global transactions managed by an
application server and local transactions managed by using the JDBC Hibernate, Java Data
Objects (JDO), or other data access APIs. It enables the developer to model a wide range of
transactions on the basis of Spring’s declarative and programmatic transaction management.
Spring Web Service:
Generates Web service endpoints and definitions based on Java classes, but it is difficult to
manage them in an application. To solve this problem, Spring Web Service provides layered-
based approaches that are separately managed by Extensible Markup Language (XML)
parsing (the technique of reading and manipulating XML). Spring provides effective mapping
for transmitting incoming XML message request to an object and the developer to easily
distribute XML message (object) between two machines.
JDBC abstraction layer:
Helps the users in handling errors in an easy and efficient manner. The JDBC programming
code can be reduced when this abstraction layer is implemented in a Web application. This
layer handles exceptions such as DriverNotFound. All SQLExceptions are translated into the
DataAccessException class. Spring’s data access exception is not JDBC specific and hence
Data Access Objects (DAO) are not bound to JDBC only.
Spring TestContext framework:
Provides facilities of unit and integration testing for the Spring applications. Moreover, the
Spring TestContext framework provides specific integration testing functionalities such as
context management and caching DI of test fixtures, and transactional test management
with default rollback semantics.
Evolution of Spring Framework
The framework was first released under the Apache 2.0 license in June 2003. After that there has
been a significant major revision, such as Spring 2.0 provided XML namespaces and AspectJ support,
Spring 2.5 provide annotation-driven configuration, Spring 3.0 provided a Java-based @Configuration
model. The latest release of the spring framework is 4.0. it is released with the support for Java 8 and
Java EE 7 technologies. Though you can still use Spring with an older version of java, the minimum
requirement is restricted to Java SE 6. Spring 4.0 also supports Java EE 7 technologies, such as java
message service (JMS) 2.0, java persistence API (JPA) 2.1, Bean validation 1.1, servlet 3.1, and JCache.
Spring Framework Architecture
The Spring framework consists of seven modules which are shown in the above Figure. These
modules are Spring Core, Spring AOP, Spring Web MVC, Spring DAO, Spring ORM, Spring context, and
Spring Web flow. These modules provide different platforms to develop different enterprise
applications; for example, you can use Spring Web MVC module for developing MVC-based
applications.
Spring Framework Modules
Spring Core Module:
The Spring Core module, which is the core component of the Spring framework, provides the
IoC container There are two types of implementations of the Spring container, namely, bean
factory and application context. Bean factory is defined using the
org.springframework.beans.factory.BeanFactory interface and acts as a container for beans.
The Bean factory container allows you to decouple the configuration and specification of
dependencies from program logic. In the Spring framework, the Bean factory acts as a
central IoC container that is responsible for instantiating application objects. It also
configures and assembles the dependencies between these objects. There are numerous
implementations of the BeanFactory interface. The XmlBeanFactory class is the most
common implementation of the BeanFactory interface. This allows you to express the object
to compose your application and remove interdependencies between application objects.
Spring AOP Module:
Similar to Object-Oriented Programming (OOP), which breaks down the applications into
hierarchy of objects, AOP breaks down the programs into aspects or concerns. Spring AOP
module allows you to implement concerns or aspects in a Spring application in Spring AOP,
the aspects are the regular Spring beans or regular classes annotated with @Aspect
annotation. These aspects help in transaction management and logging and failure
monitoring of an application. For example, transaction management is required in bank
operations such as transferring an amount from one account to another Spring AOP module
provides a transaction management abstraction layer that can be applied to transaction APIs.
Spring ORM Module:
The Spring ORM module is used for accessing data from databases in an application. It
provides APIs for manipulating databases with JDO, Hibernate, and iBatis. Spring ORM
supports DAO, which provides a convenient way to build the following DAOs-based ORM
solutions:
o Simple declarative transaction management
o Transparent exception handling
o Thread-safe, lightweight template classes
o DAO support classes
o Resource management
Spring Web MVC Module:
The Web MVC module of Spring implements the MVC architecture for creating Web
applications. It separates the code of model and view components of a Web application. In
Spring MVC, when a request is generated from the browser, it first goes to the
DispatcherServlet class (Front Controller), which dispatches the request to a controller
(SimpleFormController class or AbstractWizardformController class) using a set of handler
mappings. The controller extracts and processes the information embedded in a request and
sends the result to the DispatcherServlet class in the form of the model object. Finally, the
DispatcherServlet class uses ViewResolver classes to send the results to a view, which
displays these results to the users.
Spring Web Flow Module:
The Spring Web Flow module is an extension of the Spring Web MVC module. Spring Web
MVC framework provides form controllers, such as class SimpleFormController and
AbstractWizardFormController class, to implement predefined workflow. The Spring Web
Flow helps in defining XML file or Java Class that manages the workflow between different
pages of a Web application. The Spring Web Flow is distributed separately and can be
downloaded through http://www.springframework.org website.
The following are the advantages of Spring Web Flow:
o The flow between different UIs of the application is clearly provided by defining Web
flow in XML file.
o Web flow definitions help you to virtually split an application in different modules
and reuse these modules in multiple situations.
Spring Web DAO Module:
The DAO package in the Spring framework provides DAO support by using data access
technologies such as JDBC, Hibernate, or JDO. This module introduces a JDBC abstraction
layer by eliminating the need for providing tedious JDBC coding. It also provides
programmatic as well as declarative transaction management classes. Spring DAO package
supports heterogeneous Java Database Connectivity and O/R mapping, which helps Spring
work with several data access technologies. For easy and quick access to database resources,
the Spring framework provides abstract DAO base classes. Multiple implementations are
available for each data access technology supported by the Spring framework. For example,
in JDBC, the JdbcDaoSupport class and its methods are used to access the DataSource
instance and a preconfigured JdbcTemplate instance. You need to simply extend the
JdbcDaoSupport class and provide a mapping to the actual DataSource instance in an
application context configuration to access a DAO-based application.
Spring Application Context Module:
The Spring Application context module is based on the Core module. Application context
org.springframework.context.ApplicationContext is an interface of BeanFactory. This module
derives its feature from the org.springframework.beans package and also supports
functionalities such as internationalization (I18N), validation, event propagation, and
resource loading. The Application context implements MessageSource interface and provides
the messaging functionality to an application.
How to download and install Spring framework
1. For Downloading Spring Repository you need to
visit https://repo.spring.io/release/org/springframework/spring/. In this website, you will
find different spring framework releases. You have to click on latest framework release. Here
you will find three files which are:
spring-framework-5.1.4.RELEASE-dist.zip
spring-framework-5.1.4.RELEASE-docs.zip
spring-framework-5.1.4.RELEASE-schema.zip
2. For Installing, You need to extract the “spring-framework-5.1.4.RELEASE-dist.zip” file in your
C drive. Now you are able to run your application in spring framework.