Interview :: Spring
It is a lightweight, loosely coupled and integrated framework for developing enterprise applications in java.
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.
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.
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.
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.
No. | Constructor Injection | Setter Injection |
---|---|---|
1) | No Partial Injection | Partial Injection |
2) | Desn'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. |
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.
The autowiring modes are given below:
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 |
The "autodetect" mode is deprecated since spring 3.
There are 5 bean scopes in spring framework.
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. |