Giới thiệu tổng quan về Spring framework

Một trong những framework của Java phổ biến nhất hiện nay trên  thế giới không ai khác ngoài Spring framework.Chẳng bao giờ là tự nhiên cả,tự nhiên ở đây là spring là framework được lựa chọn yêu thích của các lập trình viên.Đơn giản nó có rất nhiều tính năng hay so với các framework khác,bài viết này xin được giới thiệu tổng quan về spring framework.

giới thiệu tổng quan về spring framework.
Giới thiệu tổng quan về spring framework.

Tổng quan về Spring Framework

Spring Framework là gì?

Spring Framework là một framework dung lượng nhỏ. Spring được coi là một khung framework cho mọi framework vì lí do Spring Framework cung cấp hỗ trợ cho nhiều framework như Struts, Hibernate, EJB, JSF, v.v.
Các tính năng cốt lõi của Spring Framework có thể được sử dụng trong việc phát triển ứng dụng Java nhưng có phần mở rộng hơn trong việc xây dựng ứng dụng Web trên nền tảng EE.
Mục tiêu của Spring Framework là làm cho việc phát triển J2EE dễ dàng hơn và thúc đẩy lập trình tốt hơn bằng việc áp dụng mô hình lập trình dựa trên POJO.

Ưu điểm khi dùng Spring Framework:

– Xác định Tempale trước: Spring Framework cung cấp những template cho Hibernate, Struts, JDBC, v.v. Vì vậy, lập trình viên không cần phải viết quá nhiều code và có thể bỏ qua những bước cơ bản.
– Dễ dàng kiểm thử: Dependency Injection làm cho việc kiểm thử phần mềm, ứng dụng được tiến hành dễ dàng hơn. Nếu như ứng dụng EJB yêu cầu máy chủ phải chạy lại ứng dụng thì Spring Framework thì không.
– Dung lương nhỏ: Spring Framework có dung lượng nhỏ nhờ vào mô hình POJO. Spring Framework không bắt lập trình viên phải kế thừa các lớp hay thực hiện qua bất kì giao diện nào. Đó là lí do Spring Framework được coi là bất khả xâm phạm.
– Phát triển nhanh: Dependency Injection tạo nên tính năng đặc biệt của Spring Framework giúp hỗ trợ các framework khác và giúp cho việc phát triển ứng dụng JavaEE dễ dàng hơn.
– Hỗ trợ khai báo: Spring Framework cung cấp những hỗ trợ khai báo về bộ nhớ đệm, xác nhận, giao dịch và định dạng.
– Tính trừu tượng: Nó cung cấp sự trừu tượng hóa cao cho các chi tiết JavaEE như JMS, JDBC, JPA và JTA.

Ví dụ minh họa :

Để bạn đọc dễ hình dung hơn nữa về ưu điểm của Spring framework tôi sẽ tạo một v í dụ về Dependency Injection (DI) và IOC :

dependency-injection
dependency-injection

Tạo interface IAnimal là động vật và chứa phương thức say() là tiếng của động vật đó.

package bean;

public interface IAnimal {
	public void say();
}

Tiếp theo tạo hai class là DogCat và kế thừa từ lớp IAnimal,lúc này cả hai phương thức đều orveride lại method say() của interface IAnimal.

Class Dog :

package bean;

public class Dog implements IAnimal{

	@Override
	public void say() {
		System.out.println("Go go goo...!!!");
	}
}

Class Cat:

package bean;

public class Cat implements IAnimal{

	@Override
	public void say() {
		System.out.println("Meoo meoooooooooooo..!!!");
	}

}

Tạo class Test gọi phương thức main để triển khai phương thức say() như sau :

package main;

import bean.Dog;
import bean.IAnimal;


public class Test {
	public static void main(String[] args) {
		IAnimal animal = new Dog();
		animal.say();
	}
}

Với trường hợp trên,khi chạy thì kết quả sẽ là :

Output : Go go goo…!!!

Đây là một ví dụ rất rõ ràng khi chúng ta chưa sử dụng DI,muốn gọi phương thức say() của lớp Dog thì cần phải tạo đối tượng sau đó mới gọi sử dụng được phương thức say().Nghĩa là muốn gọi phương thức thì các bạn cần phải tạo đối tượng trước sau đó mới được phép gọi phương thức.

Để tiện theo dõi thì tôi sẽ định nghĩa ở đây về hai khái niệm DI và IOC.Với Java thì hai khái niệm này hoàn toàn tương tự nhau :

  • Dependency Injection (bean injection, bean wiring): Là khả năng liên kết giữa các thành phần lại với nhau trong Spring, đó chính là việc các thuộc tính trong một đối tượng được “tiêm chích” để tham chiếu lần lượt đến các đối tượng khác được quản lý bởi Spring container.
  • Inversion of Control (IoC): Đó chính là khả năng của Spring container trong việc quản lý các thành phần, khi mà thay vì một thành phần phải tự đòi hỏi các tài nguyên cho nó, thì nó sẽ được Spring container cung cấp các tài nguyên dựa vào thông tin trong file cấu hình.

Hai khái niệm trên có lẽ hơi trừu tượng. Tuy nhiên, chúng ta hãy cứ nhớ Dependency Injection là mô tả về khả năng liên kết các thành phần trong Spring, còn Inversion of Control mô tả cho khả năng

Vậy bây giờ,tôi sẽ tạo ví dụ khi chúng ta có sử dụng DI (Dependency Injection ) thì nó có khác gì không?

Tạo file ioc.properties trong src :

package.name=bean
bean.name=IAnimal
implementation.name=Dog

Với package.name : là tên package.

Với bean.name : là tên  bean name

implementation.name là tên bean implemen

Tạo class Injector và viết một phương thức getInstance() trả về kiểu dữ liệu là IAnimal.

package library;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

import bean.IAnimal;

public class Injector {

	public static IAnimal getInstance(String propertiesFile)
			throws FileNotFoundException, IOException, InstantiationException,
			IllegalAccessException, ClassNotFoundException {
		IAnimal dependency = null;
		Properties pros = new Properties();
		pros.load(new FileInputStream(propertiesFile));

		String packageName = pros.getProperty("package.name");
		String implementationName = pros.getProperty("implementation.name");
		dependency = (IAnimal) Class.forName(
				packageName + "." + implementationName).newInstance();
		return dependency;
	}
}

Tạo class InjectorDemo :

package main;

import library.InjectorDemo;
import bean.IAnimal;


public class Demo {
	public static void main(String[] args) {
		IAnimal iAnimal = InjectorDemo.getInstance("src\\iocDemo.xml");
		iAnimal.say();
	}
}

Khi chạy ứng dụng thì output : Go go goo…!!!

Vấn đề bây giờ chắc rằng các bạn đọc đã hiểu.Lúc này chúng ta chưa biết đối tượng là gì cả,là Dog hay Cat.Mà đối tượng là do chúng ta truyền vào.Chứ không như trường hợp một,cần phải khởi tạo đối tượng trước rồi mới gọi phương thức.

Tổng kết :

Cuối cùng bài viết này,hy vọng các bạn đọc sẽ hiểu hơn spring framework.Qua đó giúp bạn có bàn đạp cơ bản để tiếp tục tìm hiểu về spring – một framework hiện đang phổ biến nhất thế giới.Chúng ta còn những loạt bài hướng dẫn về spring nữa.Hẹn gặp các bạn ở những bài học sau.Chúc thành công!

 

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận
x