Followers

springIOC : Spring Interview Questions

 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