1) What is Spring?
It
is a lightweight, loosely coupled and integrated framework for developing
enterprise applications in java.
2) What are the advantages of spring framework?
Non
Invasive
Frame
works of frame works
Predefined
Templates
Loose
Coupling
Easy
to test
Lightweight
Fast
Development
Powerful
Abstraction
Declarative
support
3) What are the modules of spring framework?
Spring
Core Container
Web
Data
Access/Integration
AOP,
Aspects and Instrumentation
Test
4) What is IOC and DI?
IOC
(Inversion of Control) and DI (Dependency Injection) is a design pattern to
provide loose coupling. It removes the dependency from the program.
Let's
write a code without following IOC and DI.
public
class Employee{
Address
address;
Employee(){
address=new
Address();//creating instance
}
}
Now,
there is dependency between Employee and Address because Employee is forced to
use the same address instance.
Let's
write the IOC or DI code.
public
class Employee{
Address
address;
Employee(Address
address){
this.address=address;//not
creating instance
}
}
Now,
there is no dependency between Employee and Address because Employee is not
forced to use the same address instance. It can use any address instance.
5) What is the role of IOC container in spring?
IOC
container is responsible to:
create
the instance
configure
the instance, and
assemble
the dependencies
6) What are the types of IOC container in spring?
There
are two types of IOC containers in spring framework.
BeanFactory
ApplicationContext
7) What is the difference between BeanFactory and ApplicationContext?
BeanFactory
is the basic container whereas ApplicationContext is the advanced container.
ApplicationContext extends the BeanFactory interface. ApplicationContext
provides more facilities than BeanFactory such as integration with spring AOP, message
resource handling for i18n etc.
8) What is the difference between constructor injection and
setter injection?
S.No
|
Constructor Injection
|
Setter Injection
|
1
|
No Partial Injection
|
Partial Injection is possible
|
2
|
Doesn't override the setter property
|
Overrides the constructor property if both are defined.
|
3
|
Creates new instance if any modification occurs
|
Doesn't create new instance if you change the property value
|
4
|
Better for too many properties
|
Better for few properties.
|
9) What is autowiring in spring? What are the autowiring modes?
Autowiring
enables the programmer to inject the bean automatically. We don't need to write
explicit injection logic.
Let's
see the code to inject bean using dependency injection.
<bean
id="emp" class="com.mohan.Employee"
autowire="byName" />
The
autowiring modes are given below:
S.No
|
Mode
|
Description
|
1
|
No
|
this is the default mode, it means autowiring is not enabled.
|
2
|
byName
|
injects the bean based on the property name. It uses setter
method.
|
3
|
byType
|
injects the bean based on the property type. It uses setter
method.
|
4
|
Constructor
|
It injects the bean using constructor
|
Note
: The "autodetect" mode is deprecated since spring 3.
10) What are the different bean scopes in spring?
There
are 5 bean scopes in spring framework.
S.No
|
Scope
|
Description
|
1
|
Singleton
|
The
bean instance will be only once and same instance will be returned by the IOC
container. It is the default scope.
|
2
|
Prototype
|
The
bean instance will be created each time when requested.
|
3
|
Request
|
The
bean instance will be created per HTTP request.
|
4
|
Session
|
The
bean instance will be created per HTTP session.
|
5
|
Globalsession
|
The
bean instance will be created per HTTP global session. It can be used in
portlet context only.
|
11) In which scenario, you will use singleton and prototype
scope?
Singleton
scope should be used with EJB stateless session bean and prototype scope with
EJB stateful session bean.
12) What are the transaction management supports provided by
spring?
Spring
framework provides two type of transaction management supports:
Programmatic
Transaction Management: should be used for few transaction operations.
Declarative
Transaction Management: should be used for many transaction operations.
No comments:
Post a Comment