Why Spring Framework:
Initially the developers were using (EJB) Enterprise Java Beans for various applications which helped them to manage the (UI) User Interface component. But developers wanted to use JavaBeans to develop Web Applications as well. But EJB was not providing services like managing security and transaction and that was the actual requirement developers were having to prove the features of Java i.e. Robust and Secure Enterprise Applications.
So EJB came up with a solution that EJB can extends the java components in such a way that it can provide services that can help the enterprise applications.
When this idea came to the picture creating Remote interfaces and implementing callback methods by using EJB was not that easy that it can lead to the complexity by providing implementation code which can provide various tasks. Because of these all complications developers were searching for an easier way to develop enterprise applications.
Here Spring Framework came with the solution for all these complications. Spring Framework has different modules and techniques which simplify the complexity of enterprise applications. It involves Spring IOC (Inversion Of Control), DI (Dependency Injection), Spring AOP (Aspect-Oriented Programming), Spring MVC (Model View Controller) also POJO (Plain Old Java Objects) classes, which remove the complexities that developers were facing because of using EJB for Enterprise Applications.
Spring is lightweight and open source framework so developers can develop Enterprise applications which are scalable, more reliable and simple and Java EE 7 and onward versions are supportable. Spring framework manages business objects in various ways, So development of web applications is much easier than we develop it by using the Java frameworks and APIs (Application Program Interface), JDBC (Java Database Connectivity), Java Servlet technology and JSP (Java Server Pages).
Spring is having different layers or we can say that collection of sub frameworks, which has been used separately for constructing Applications and sometimes for better implementation of web applications we grouped them together. These layers are Spring AOP, Spring ORM (Object – Relational Mapping), Spring Web MVC and Spring Web Flow.
EJB (Enterprise Java Beans):
JEE platform is a component architecture which provide the highly transactional and features to Enterprise Applications and EJB is the essential part is a JEE.
According to Enterprise level applications EJB provides an architecture that not only used for development but also for deployment. The applications which are robust, high performance and scalable. We can deploy JEE application on any application server. EJB is divided into three categories:
- Session Bean
- Entity Bean
- Message driven Bean
1) Session Bean:
For a single user Session Bean stores the data in a stateful and stateless manner. Comparing with Entity Bean it is less resource intensive. Session Bean object is available till the user is logged in, it destroyed when user logged out (terminates).
2) Entity Bean:
Persistent data storage can be represented by Entity Beans. In database user data has been stored through entity beans and also retrieved from database by using entity beans.
3) Message driven Bean:
From external entities JMS (Java Messaging Service) can get the Message Driven Beans and acting accordingly. As its name suggests, inside of context of JMS Message Driven beans are used.
If we are talking about Spring framework and other frameworks then Spring framework is unique among all because of its features like transaction management, IOC and AOP. Some of the important features we are going to discuss.
1. IOC Container:
It is the core container which uses Dependency Injection / IOC design pattern which provides an object reference to a class in between run-time implicitly. It’s an alternate for service locator pattern. For the application objects IOC container contains assembler code that handles the configuration management.
2. Data Access Framework:
For storing persistent data in database this framework allows the developer to use persistent API’s like Hibernate ORM tool or JDBC. It helps developers in many ways to solve problems such as how to connect with database, how to manage transactions, how to be sure that connection is closed, how exceptions will be resolved or deal with it. Because of transaction management it enables developers to write code to access the persistent data in whole application development phase.
3. Transaction Management:
Without affecting code it manages the transactions. Transaction management framework provides JTA (Java Transaction API) for the global transaction management which is managed by an application server and local transactions has been managed by using the JDBC, JDO (Java Data Objects), hibernate or other data access API’s. It gives the developers flexibility to manage the wide range of transaction on the basis of Spring’s declarative and transaction management by pro-grammatically.
4. Spring MVC Framework:
As we know MVC (Model View Controller) in Swing and JSP (Java Server Pages) the basic idea is clear to us. By using Spring MVC Framework we can build Web Based Applications with MVC Architecture. Whatever the request hit by the client initially go through the controller and then dispatched to different views that will be anything like different JSP pages or servlets. Handling the forms and validating them such types of features of Spring MVC Framework can be easily integrated with famous view technologies like ISP (Internet Service Provider), FreeMarker, Jasper Report and Velocity.
5. Spring Web Services:
Based on java Classes to generates Web Service endpoints and definitions was so difficult to manage in applications. To solve this problem Spring Web service come to a picture which provides Layer – based approaches which are separately managed by XML (Extensible Markup Language) parsing (by which we can read and manipulate XML). Spring Framework effectively mapp the incoming XML messages for transmitting message request to an object and the developer too easily distribute or broadcast XML messages between two machines.
6. Spring TextContext Framework:
This framework provides facility of unit testing and integration testing for the Spring based applications. Also, the Spring TestContext framework provides us specific integration testing functionalities such as caching DI (Dependency Injections) of test fixtures, context management , and transnational test management with default rollback operation semantics.
7. JDBC Abstraction Layer:
It helps the users to handle errors in an easy and efficient way. The JDBC programming code can be reduced by using this abstraction layer is implemented in a Web application. This layer handles so many exceptions such as DriverNotFound, ClassNotFoundException etc. and all the SQLExceptions are translated into the DataAccessException class. Spring’s data access exception is not specific to JDBC and hence Data Access Objects (DAO) are not bound with JDBC only.
1. Spring Core:
Spring Framework has the Core / base component as Spring Core Module. This Framework provides the IOC (Inversion Of Control) container. There are two containers IOC is having that are,
1) Bean Factory: Bean Factory is working as a Container, which involves Dependency Injections. Bean factory container can decouple the configuration and specification of dependency from program logic with the help of dependency injection. It is a central IOC container which is responsible for initiating application objects.
2) Application Context
2. Spring ORM:
ORM stands for Object Relational Mapping. ORM we always use to connect with database and access data from database locally or remotely. Spring ORM provides different API’s like JDO (Java Data Objects), Hibernate, iBatis etc. Spring ORM can supports DAO (Data Access Objects) through which application development is convenient. DAO bases ORM solutions are given below:
- Transaction management simple declarative programs
- Transparent exception handling
- Template classes like Thread-safe, lightweight
- DAO support classes
- Resource management
3. Spring Web Flow:
This Module is an extension to the Spring Web MVC module. Spring Web MVC framework has form controllers like SimpleFormController class and AbstractWizardFormController class for the implementation of predefined workflow. The Spring Web Flow helps for defining XML file or the Java classes which manages the workflow or mapping between different pages of web application. The mapping between different user interfaces of application has been provided by defining Web Flow in XML file. Web flow definitions helps in application to virtually split an application in different modules and reuse these modules in different situations. Spring web flow lifecycle can manage everything automatically.
4. Spring DAO:
DAO (Data Access Object) package available in spring framework provides DAO support by using data access technologies like JDO (Java Data Objects), JDBC (Java Database connectivity) and Hibernate ORM Tool. Spring DAO module introduces JDBC abstraction layer by removing the need of providing tedious JDBC coding. It provides programmatic and transactional management classes. For instant access to database resources Spring framework provides abstract DAO classes.
5. Spring Application Context:
Spring Application context module is based on Spring Core Module as shown in the above figure. Application Context of org.springframework.context.ApplicationContext is an Interface available of BeanFactory. This framework supports many functionalities like validation, event propagation internationalization and resource loading. Application Context provides messaging functionality to an application by implementing MessageSource interface.
6. Spring AOP:
As we already familiar with OOP (Object Oriented Programming) Spring Framework breaks down the programs into Aspects and concerns or aspects in spring application into the hierarchy of objects. The Aspects are regular spring beans or regular classes.
7. Spring Web MVC:
The Web MVC module of Spring implements is the MVC architecture for creating Web applications. It separates the code of model and view components of a Web application and controls them by using controllers.
Call the Trainer and Book your free demo Class for JAVA now!!!