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.

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 :

Tạo interface IAnimal là động vật và chứa phương thức say() là tiếng của động vật đó.
1 2 3 4 5 |
package bean; public interface IAnimal { public void say(); } |
Tiếp theo tạo hai class là Dog và Cat 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 :
1 2 3 4 5 6 7 8 9 |
package bean; public class Dog implements IAnimal{ @Override public void say() { System.out.println("Go go goo...!!!"); } } |
Class Cat:
1 2 3 4 5 6 7 8 9 10 |
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 :
1 2 3 4 5 6 7 8 9 10 11 12 |
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 :
1 2 3 |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
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 :
1 2 3 4 5 6 7 8 9 10 11 12 |
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!
I simply want to offer you a huge thumbs
up for your excellent info you have here on this post.
I am coming back to your website for more soon
Excellent web site you have got here.. It’s difficult to find high-quality writing like yours nowadays.
I seriously appreciate individuals like you! Take care!!
No matter if some one searches for his essential thing, therefore he/she wants to be
available that in detail, so that thing is maintained over here.
Thanks for sharing your thoughts on how to download minecraft.
Regards
After checking out a number of the blog posts on your website, I
really like your technique of blogging. I book-marked it to my bookmark webpage list and will be checking back soon. Please visit my website as well and let me know how you feel.
Hi, I think your website might be having browser compatibility issues.
When I look at your blog site in Ie, it looks fine but when opening
in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads up!
Other then that, awesome blog!
This piece of writing is in fact a pleasant one it assists new web people, who
are wishing for blogging.
Fantastic goods from you, man. I’ve consider
your stuff previous to and you’re just extremely wonderful.
I actually like what you’ve got right here, really like
what you’re saying and the way in which by which you assert it.
You make it enjoyable and you still care for to stay it wise.
I can not wait to learn far more from you. That is actually a
great web site.
you are truly a just right webmaster. The web site loading speed is amazing.
It seems that you are doing any distinctive trick. Furthermore,
The contents are masterpiece. you have done a excellent
activity on this matter!
I always spent my half an hour to read this web
site’s articles all the time along with a
cup of coffee.
It’s an awesome piece of writing designed for all the
web viewers; they will obtain advantage from it I am sure.
Hi there! I know this is kinda off topic but I was wondering
which blog platform are you using for this website? I’m getting sick and tired of WordPress because I’ve had
problems with hackers and I’m looking at options for another platform.
I would be great if you could point me in the direction of
a good platform.
Hi everyone, it’s my first visit at this web site, and piece of writing is actually fruitful in support of me, keep up posting these types of
articles.
I really like reading through an article that can make people
think. Also, many thanks for permitting me to comment!
301 Moved Permanently [url=http://www.918online.today]301 Moved Permanently![/url]
Pretty section of content. I just stumbled upon your web site and in accession capital to assert that I get actually enjoyed account your blog
posts. Anyway I’ll be subscribing to your feeds and even I achievement you access consistently quickly.
Great blog here! Also your site loads up very fast! What host are you using?
Can I get your affiliate link to your host? I wish my website loaded up as quickly as yours lol
Hey there, You have done an incredible job. I
will definitely digg it and personally recommend to my friends.
I’m sure they’ll be benefited from this website.
I was pretty pleased to uncover this web site. I need to to thank you for ones time just
for this wonderful read!! I definitely loved every bit of it and i also have you bookmarked to
check out new things on your website.
I’m curious to find out what blog system you happen to be using?
I’m experiencing some small security problems with my latest site and I would like to find something more safe.
Do you have any suggestions?
Hi, constantly i used to check website posts here early in the
dawn, for the reason that i like to find out more and more.