|
Page
1, Page
2, Page
3
|
|
What is Spring?
|
Spring is a lightweight
inversion of control and aspect-oriented container framework.
|
Explain
Spring?
|
- Lightweight - spring is lightweight when it comes to size
and transparency. The basic version of spring framework is around 1MB.
And the processing overhead is also very negligible.
- Inversion of control (IoC) - Loose coupling is achieved in
spring using the technique Inversion of Control. The objects give their
dependencies instead of creating or looking for dependent objects.
- Aspect oriented (AOP) - Spring supports Aspect oriented
programming and enables cohesive development by separating application
business logic from system services.
- Container - Spring contains and manages the life cycle and
configuration of application objects.
- Framework - Spring provides most of the intra functionality
leaving rest of the coding to the developer.
|
What
is IOC (or Dependency Injection)?
|
The basic concept of the
Inversion of Control pattern (also known as dependency injection) is
that you do not create your objects but describe how they should be
created. You don't directly connect your components and services
together in code but describe which services are needed by which
components in a configuration file. A container (in the case of the
Spring framework, the IOC container) is then responsible for hooking it
all up.
i.e., Applying IoC, objects are given their dependencies at creation
time by some external entity that coordinates each object in the
system. That is, dependencies are injected into objects. So, IoC means
an inversion of responsibility with regard to how an object obtains
references to collaborating objects.
|
What
are the different types of IOC (dependency injection) ?
|
There are three types of
dependency injection:
- Constructor Injection (e.g. Pico container,
Spring etc): Dependencies are provided as constructor parameters.
- Setter Injection (e.g. Spring): Dependencies
are assigned through JavaBeans properties (ex: setter methods).
- Interface Injection (e.g. Avalon): Injection
is done through an interface.
Note: Spring supports only Constructor and Setter Injection
|
What
are the benefits of IOC (Dependency Injection)?
|
Benefits of IOC (Dependency
Injection) are as follows:
Minimizes the amount of code in your
application. With IOC containers you do not care about how services are
created and how you get references to the ones you need. You can also
easily add additional services by adding a new constructor or a setter
method with little or no extra configuration.
Make your application more testable by not
requiring any singletons or JNDI lookup mechanisms in your unit test
cases. IOC containers make unit testing and switching implementations
very easy by manually allowing you to inject your own objects into the
object under test.
Loose coupling is promoted with minimal effort
and least intrusive mechanism. The factory design pattern is more
intrusive because components or services need to be requested
explicitly whereas in IOC the dependency is injected into requesting
piece of code. Also some containers promote the design to interfaces
not to implementations design concept by encouraging managed objects to
implement a well-defined service interface of your own.
IOC containers support eager instantiation and
lazy loading of services. Containers also provide support for
instantiation of managed objects, cyclical dependencies, life cycles
management, and dependency resolution between managed objects etc.
|
What
are the advantages of Spring framework?
|
The advantages of Spring are as
follows:
- Spring has layered architecture. Use what you need and
leave you don't need now.
- Spring Enables POJO Programming. There is no behind the
scene magic here. POJO programming enables continuous integration and
testability.
- Dependency Injection and Inversion of Control Simplifies
JDBC
- Open source and no vendor lock-in.
|
What
are the different modules in Spring framework?
|
- The Core container module
- Application context module
- AOP module (Aspect Oriented Programming)
- JDBC abstraction and DAO module
- O/R mapping integration module (Object/Relational)
- Web module
- MVC framework module
|
| What
is the structure of Spring framework? |

|
What
is the Core container module?
|
This module is provides the
fundamental functionality of the spring framework. In this module
BeanFactory is the heart of any spring-based application. The entire
framework was built on the top of this module. This module makes the
spring container.
|
What
is Application context module?
|
The Application context module
makes spring a framework. This module extends the concept of
BeanFactory, providing support for internationalization (I18N)
messages, application lifecycle events, and validation. This module
also supplies many enterprise services such JNDI access, EJB
integration, remoting, and scheduling. It also provides support to
other framework.
|
What
is AOP module?
|
The AOP module is used for
developing aspects for our Spring-enabled application. Much of the
support has been provided by the AOP Alliance in order to ensure the
interoperability between Spring and other AOP frameworks. This module
also introduces metadata programming to Spring. Using Spring's metadata
support, we will be able to add annotations to our source code that
instruct Spring on where and how to apply aspects.
|
What
is JDBC abstraction and DAO module?
|
Using this module we can keep up
the database code clean and simple, and prevent problems that result
from a failure to close database resources. A new layer of meaningful
exceptions on top of the error messages given by several database
servers is bought in this module. In addition, this module uses
Spring's AOP module to provide transaction management services for
objects in a Spring application.
|
What
are object/relational mapping integration module?
|
Spring also supports for using
of an object/relational mapping (ORM) tool over straight JDBC by
providing the ORM module. Spring provide support to tie into several
popular ORM frameworks, including Hibernate, JDO, and iBATIS SQL Maps.
Spring's transaction management supports each of these ORM frameworks
as well as JDBC.
|
What
is web module?
|
This module is built on the
application context module, providing a context that is appropriate for
web-based applications. This module also contains support for several
web-oriented tasks such as transparently handling multipart requests
for file uploads and programmatic binding of request parameters to your
business objects. It also contains integration support with Jakarta
Struts.
|
What
is web module?
|
Spring comes with a
full-featured MVC framework for building web applications. Although
Spring can easily be integrated with other MVC frameworks, such as
Struts, Spring's MVC framework uses IoC to provide for a clean
separation of controller logic from business objects. It also allows
you to declaratively bind request parameters to your business objects.
It also can take advantage of any of Spring's other services, such as
I18N messaging and validation.
|
|
What
is a BeanFactory?
|
A BeanFactory is an
implementation of the factory pattern that applies Inversion of Control
to separate the application's configuration and dependencies from the
actual application code.
|
What
is the difference between Bean Factory and Application Context
?
|
On the surface, an application
context is same as a bean factory. But application context offers much
more..
- Application contexts provide a means for
resolving text messages, including support for i18n of those messages.
- Application contexts provide a generic way to
load file resources, such as images.
- Application contexts can publish events to
beans that are registered as listeners.
- Certain operations on the container or beans
in the container, which have to be handled in a programmatic fashion
with a bean factory, can be handled declaratively in an application
context.
- ResourceLoader support: Spring's Resource
interface us a flexible generic abstraction for handling low-level
resources. An application context itself is a ResourceLoader, Hence
provides an application with access to deployment-specific Resource
instances.
- MessageSource support: The application context
implements MessageSource, an interface used to obtain localized
messages, with the actual implementation being pluggable
|
What
is AOP Alliance?
|
AOP Alliance is an open-source
project whose goal is to promote adoption of AOP
and interoperability among different AOP implementations by defining a
common
set of interfaces and components.
|
What
is Spring configuration file?
|
Spring configuration file is an
XML file. This file contains the classes information and describes how
these classes are configured and introduced to each other.
|
What
does a simple spring application contain?
|
These applications are like any
Java application. They are made up of several classes, each performing
a specific purpose within the application. But these classes are
configured and introduced to each other through an XML file. This XML
file describes how to configure the classes, known as the Spring
configuration file.
|
What
is XMLBeanFactory?
|
BeanFactory has many
implementations in Spring. But one of the most useful one is
org.springframework.beans.factory.xml.XmlBeanFactory, which loads its
beans based on the definitions contained in an XML file. To create an
XmlBeanFactory, pass a java.io.InputStream to the constructor. The
InputStream will provide the XML to the factory. For example, the
following code snippet uses a java.io.FileInputStream to provide a bean
definition XML file to XmlBeanFactory.
BeanFactory factory = new XmlBeanFactory(new
FileInputStream("beans.xml"));
To retrieve the bean from a BeanFactory, call the getBean() method by
passing the name of the bean you want to retrieve.
MyBean myBean = (MyBean) factory.getBean("myBean");
|
What
are important ApplicationContext implementations in spring framework?
|
- ClassPathXmlApplicationContext
- This context loads a context definition from an XML
file located in the class path, treating context definition files as
class path resources.
- FileSystemXmlApplicationContext
- This context loads a context definition from an XML file in the
filesystem.
- XmlWebApplicationContext
- This context loads the context definitions from an XML file contained
within a web application.
|
Explain
Bean lifecycle in Spring framework?
|
- The spring container finds the bean's definition from the
XML file and instantiates the bean.
- Using the dependency injection, spring populates all of the
properties as specified in the bean definition.
- If the bean implements the BeanNameAware interface, the
factory calls setBeanName() passing the bean's ID.
- If the bean implements the BeanFactoryAware interface, the
factory calls setBeanFactory(), passing an instance of itself.
- If there are any BeanPostProcessors associated with the
bean, their post- ProcessBeforeInitialization() methods will be called.
- If an init-method is specified for the bean, it will be
called.
- Finally, if there are any BeanPostProcessors associated
with the bean, their postProcessAfterInitialization() methods will be
called
|
What
is bean wiring?
|
Combining together beans within
the Spring container is known as bean wiring or wiring. When wiring
beans, you should tell the container what beans are needed and how the
container should use dependency injection to tie them together.
|
How
to add a bean in spring application?
|
In the bean tag the id attribute
specifies the bean name and the class attribute specifies the fully
qualified class name.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean
id="foo" class="com.act.Foo"/>
<bean
id="bar" class="com.act.Bar"/>
</beans>
|
What
are singleton beans and how can you create prototype beans?
|
Beans defined in spring
framework are singleton beans. There is an attribute in bean tag named
'singleton' if specified true then bean becomes singleton and if set to
false then the bean becomes a prototype bean. By default it is set to
true. So, all the beans in spring framework are by default singleton
beans.
<beans>
<bean id="bar"
class="com.act.Foo" singleton="false"/>
</beans>
|
What
are the important beans lifecycle methods?
|
There are two important bean
lifecycle methods. The first one is setup which is called when the bean
is loaded in to the container. The second method is the teardown method
which is called when the bean is unloaded from the container.
|
How
can you override beans default lifecycle methods?
|
The bean tag has two more
important attributes with which you can define your own custom
initialization and destroy methods. Here I have shown a small
demonstration. Two new methods fooSetup and fooTeardown are to be added
to your Foo class.
<beans>
<bean id="bar" class="com.act.Foo"
init-method="fooSetup" destroy="fooTeardown"/>
</beans>
|
What
are Inner Beans?
|
When wiring beans, if a bean
element is embedded to a property tag directly, then that bean is said
to the Inner Bean. The drawback of this bean is that it cannot be
reused anywhere else.
|
What
is DelegatingVariableResolver?
|
Spring provides a custom
JavaServer Faces VariableResolver implementation that extends the
standard Java Server Faces managed beans mechanism which lets you use
JSF and Spring together. This variable resolver is called as
DelegatingVariableResolver
|
|
Page
1, Page
2, Page
3
|
|
|
|