The document provides an overview of the Spring Framework. It describes Spring as an open source application development framework for Java that provides features like inversion of control (IoC) and dependency injection. The key benefits of Spring include its modular architecture, support for testing, integration with other technologies like ORM frameworks, and web MVC framework. The core container in Spring uses dependency injection to manage application components (beans). Configuration can be done via XML, annotations, or Java-based approaches. Spring also supports aspects like dependency injection, AOP, and auto-wiring to reduce coupling between objects.
2. What is a framework ?
framework is a universal, reusable software environment that provides
particular functionality as part of a larger software platform to facilitate
development of software applications, products and solutions.
Software frameworks may include
support programs
compilers
code libraries
tool sets 2
3. How to separate framework from library ….
❏Inversion Control: In a framework, unlike in libraries the overall program's flow control is not
dictated by the caller, but by the framework.
❏default behavior
❏extensibility: can be extended by the user usually by selective overriding or specialized by user
code to provide specific functionality.
❏non-modifiable framework code: The framework code, in general, is not supposed to be
modified, while accepting user-implemented extensions.
3
4. Spring framework
Spring is the most popular application development framework for
enterprise Java.
open source Java platform
initially written by Rod Johnson and was first released under the Apache 2.0
license in June 2003.
lightweight when it comes to size and transparency.
4
5. Where to use ?
can be used in developing any Java application, but there are extensions for
building web applications on top of the Java EE platform.
Spring framework targets to make J2EE development easier to use and promote
good programming practice by enabling a POJO-based programming model.
5
6. Benefits of spring..
Spring is organized in a modular fashion
makes use of technologies like several ORM frameworks, logging
frameworks, JEE, Quartz and JDK timers, other view technologies
Testing an application written with Spring is simple
Spring's web framework is a well-designed web MVC framework
provides a convenient API to translate technology-specific exceptions into
consistent, unchecked exceptions
6
8. Description of architecture
Core Container
Core provides the fundamental parts of the framework, including the IoC and Dependency
Injection features.
Bean provides BeanFactory which is a sophisticated implementation of the factory pattern.
Context builds on the solid base provided by the Core and Beans modules and it is a medium to
access any objects defined and configured.
SpEL module provides a powerful expression language for querying and manipulating an object
graph at runtime.
8
9. Data Access/Integration
JDBC provides a JDBC-abstraction layer that removes the need to do tedious JDBC related coding.
ORM provides integration layers for popular object-relational mapping APIs, including JPA, JDO,
Hibernate, and iBatis.
OXM provides an abstraction layer that supports Object/XML mapping implementations for JAXB,
Castor, XMLBeans, JiBX and XStream.
JMS contains features for producing and consuming messages.
Transaction supports programmatic and declarative transaction management for classes that
implement special interfaces and for all your POJOs.
9
10. Web
Web provides basic web-oriented integration features such as multipart file-upload functionality
and the initialization of the IoC container using servlet listeners and a web-oriented application
context.
Web-MVC contains Spring's model-view-controller (MVC) implementation for web applications.
Web-Socket provides support for WebSocket-based, two-way communication between client and
server in web applications.
Web-Portlet provides the MVC implementation to be used in a portlet environment and mirrors
the functionality of Web-Servlet module.
10
11. pre-requisites
Java Development Kit (JDK)
Apache Common Logging API
http://commons.apache.org/proper/commons-logging/download_logging.cgi
Spring Framework Libraries
http://repo.spring.io/release/org/springframework/spring/
11
12. How to use
1. Create java project
1. Add required libraries
12
16. Spring with maven
If you are using Maven for dependency management you don’t even need to supply the logging
dependency explicitly.
To create an application context and use dependency injection to configure an application
16
17. IoC Containers
Core of the Spring Framework
The container will create the objects, wire them together, configure them, and
manage their complete lifecycle from creation till destruction.
17
18. uses dependency injection (DI) to manage the components that make up an
application(spring Beans)
Spring BeanFactory Container
simplest container providing basic support for DI and defined by the
org.springframework.beans.factory.BeanFactory interface. The BeanFactory and related interfaces, such as
BeanFactoryAware, InitializingBean, DisposableBean, are still present in Spring for the purposes of backward
compatibility with the large number of third-party frameworks that integrate with Spring.
Spring ApplicationContext Container
adds more enterprise-specific functionality such as the ability to resolve textual messages from a properties file
and the ability to publish application events to interested event listeners. This container is defined by the
org.springframework.context.ApplicationContext interface.
18
19. Benefits of IoC/DI
Reduced Dependencies
Reduced Dependency Carrying
More Reusable Code
More Testable Code
More Readable Code
19
20. Bean Definition
A bean is an object that is instantiated, assembled, and otherwise managed by
a Spring IoC container.
The bean definition contains the information called configuration metadata
which is needed for the container to know the followings
How to create a bean
Bean's lifecycle details
Bean's dependencies
20
21. Spring Configuration Metadata
There are three important methods to provide configuration metadata to the
Spring Container
XML based configuration file.
Annotation-based configuration
Java-based configuration
21
23. Annotation based configuration
To describe a bean wiring,move the bean configuration into the component
class itself by using annotations on the relevant class, method, or field
declaration.
Annotation wiring is not turned on in the Spring container by default
23
24. Basic annotations
@Required
The @Required annotation applies to bean property setter methods.
@Autowired
The @Autowired annotation can apply to bean property setter methods, non-setter methods, constructor and
properties.
@Qualifier
The @Qualifier annotation along with @Autowired can be used to remove the confusion by specifying which exact
bean will be wired.
JSR-250 Annotations
Spring supports JSR-250 based annotations which include @Resource, @PostConstruct and @PreDestroy
annotations. 24
25. Java based configuration
Java based configuration option enables you to write most of your Spring
configuration without XML but with the help of few Java-based annotations
@Configuration
class can be used by the Spring IoC container as a source of bean definitions
@Bean Annotations
return an object that should be registered as a bean in the Spring application context.
@Import Annotation
25
26. Dependency Injection
The Dependency Injection is a design pattern that removes the dependency of
the programs. In such case we provide the information from the external
source such as XML file. It makes our code loosely coupled and easier for
testing.
Spring framework provides two ways to inject dependency
By Constructor
By Setter method
26
27. In such case, instance of Address class is provided by external source such as
XML file either by constructor or setter method.
27
28. Beans auto-wiring
Enables you to inject the object dependency implicitly. It internally uses setter or constructor
injection.
Autowiring can't be used to inject primitive and string values. It works with reference only.
28
29. AOP with Spring Framework
Aspect Oriented Programming entails breaking down program logic into
distinct parts.(like logging, auditing, declarative transactions, security, and
caching etc)
Spring AOP module provides interceptors to intercept an application, when a
method is executed, you can add extra functionality before or after the
method execution.
29