W.T. Unit-Iv
W.T. Unit-Iv
W.T. Unit-Iv
Spring Framework
Spring is a lightweight framework. It can be thought of as a framework of
frameworks because it provides support to various frameworks such
as Struts, Hibernate, Tapestry, EJB, JSF, etc. The framework, in broader
sense, can be defined as a structure where we find solution of the various
technical problems.
The Spring framework comprises several modules such as IOC, AOP, DAO,
Context, ORM, WEB MVC etc. We will learn these modules in next page.
Let's understand the IOC and Dependency Injection first.
1. class Employee{
2. Address address;
3. Employee(){
4. address=new Address();
5. }
6. }
1. class Employee{
2. Address address;
3. Employee(Address address){
4. this.address=address;
5. }
6. }
Thus, IOC makes the code loosely coupled. In such case, there is no need
to modify the code if our logic is moved to new environment.
1) Predefined Templates
2) Loose Coupling
3) Easy to test
The Dependency Injection makes easier to test the application. The EJB or
Struts application require server to run the application but Spring
framework doesn't require server.
4) Lightweight
5) Fast Development
6) Powerful abstraction
7) Declarative support
Dependency Lookup
The Dependency Lookup is an approach where we get the resource after
demand. There can be various ways to get the resource for example:
1. A obj = A.getA();
There can be various ways to get the resource to obtain the resource.
Let's see the problem in this approach.
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. In such case we write the code as:
1. class Employee{
2. Address address;
3.
4. Employee(Address address){
5. this.address=address;
6. }
7. public void setAddress(Address address){
8. this.address=address;
9. }
10.
11. }
o By Constructor
o By Setter method
Employee.java
It is a simple class containing two fields id and name. There are four
constructors and one method in this class.
1. package com.javatpoint;
2.
3. public class Employee {
4. private int id;
5. private String name;
6.
7. public Employee() {System.out.println("def cons");}
8.
9. public Employee(int id) {this.id = id;}
10.
11. public Employee(String name) { this.name = name;}
12.
13. public Employee(int id, String name) {
14. this.id = id;
15. this.name = name;
16. }
17.
18. void show(){
19. System.out.println(id+" "+name);
20. }
21.
22. }
applicationContext.xml
We are providing the information into the bean by this file. The
constructor-arg element invokes the constructor. In such case,
parameterized constructor of int type will be invoked. The value attribute
of constructor-arg element will assign the specified value. The type
attribute specifies that int parameter constructor will be invoked.
This class gets the bean from the applicationContext.xml file and calls the
show method.
1. package com.javatpoint;
2.
3. import org.springframework.beans.factory.BeanFactory;
4. import org.springframework.beans.factory.xml.XmlBeanFactory;
5. import org.springframework.core.io.*;
6.
7. public class Test {
8. public static void main(String[] args) {
9.
10. Resource r=new ClassPathResource("applicationContext.
xml");
11. BeanFactory factory=new XmlBeanFactory(r);
12.
13. Employee s=(Employee)factory.getBean("e");
14. s.show();
15.
16. }
17. }
Output:10 null
1. ....
2. <bean id="e" class="com.javatpoint.Employee">
3. <constructor-arg value="10"></constructor-arg>
4. </bean>
5. ....
If you change the bean element as given above, string parameter constructor will be invoked
and the output will be 0 10.
Output:0 10
1. Singleton pattern
2. Factory Method pattern
3. Proxy pattern
4. Template pattern
Singleton Pattern
The singleton pattern is a mechanism that ensures only one
instance of an object exists per application. This pattern can be
useful when managing shared resources or providing
cross-cutting services, such as logging.