Spring Framework là một framework ứng dụng và bộ chứa đảo ngược điều khiển cho nền tảng Java. Chức năng tính của framework này có thể áp dụng cho bất kỳ ứng dụng Java nào, tuy vậy, nhiều bản mở rộng dành cho việc xây dựng ứng dụng nền web cũng được phát triển trên nền tảng Java EE. Tuy framework không ấn định lên một mô hình lập trình cụ thể nào, Spring Framework đã trở nên phổ biến trong cộng đồng Java như một phương án song hành, thay thế, hoặc thậm chí bổ sung cho mô hình Enterprise JavaBeans (EJB). Đây là framework mã nguồn mở.
Phần đầu tiên của Spring Framework ban đầu nguyên được Rod Johnson viết vào năm 2000, trong khi ông đang làm một chuyên viên cố vấn cho các khách hàng trong thị trường kinh tế tài chính tại Luân Đôn. Trong lúc đang viết quyển Expert One-on-one J2EE Design And Development (Programmer to programmer) (Thiết kế và kiến tạo Java EE – tương giao cá nhân một đối một chuyên ngành (lập trình viên với lập trình viên)), ông đã mở rộng thêm phần mã nguồn, hòng biểu đạt ý tưởng của mình về mối tương quan của các trình ứng dụng với những phần khác nhau của J2EE và cho rằng người ta có thể đơn giản hóa mối tương quan của chúng, và mối liên hệ ấy có thể trở nên cố định, bất biến hơn là những gì mà các lập trình viên và các công ty vốn quen sử dụng tại thời điểm đó.
Trước đây, vào năm 2001, những mô hình lập trình cho các trình ứng dụng cho mạng WEB được đại đa số sử dụng đều do Java Servlet API và Enterprise JavaBean cung cấp. Cả hai đều là đặc tả do Sun Microsystems kiến tạo với sự cộng tác của các nhà buôn bán phần mềm và các bên quan tâm, và chúng rất được mến chuộng trong cộng đồng Java. Những trình ứng dụng không dùng cho mạng WEB như các ứng dụng trình khách (client-based application) hay các ứng dụng tác vụ (batch application) đều có thể sử dụng các công cụ từ mã nguồn mở, các công cụ trên thị trường hoặc từ các dự án khác là những cái cung cấp những đặc trưng yêu cầu.
Rod Johnson được ghi công là người thiết lập framework, dựa trên những thói quen hành nghề được công chúng chấp nhận là những phương pháp tốt nhất, và tạo cơ hội cho chúng có thể được sử dụng trong tất cả các loại hình chương trình ứng dụng, không chỉ cho các trình ứng dụng cho mạng WEB riêng mà thôi. Ý tưởng này còn được biểu lộ trong cuốn sách của ông và, sau khi được độc giả yêu cầu, ông còn cho xuất bản kèm với mã nguồn với giấy phép mã nguồn mở nữa.
Bạn đang đọc: Spring Framework – Wikipedia tiếng Việt
Một nhóm nhỏ những nhà tăng trưởng đang liên tục lan rộng ra framework này và một dự án Bất Động Sản đã được xây dựng tại Sourceforge vào tháng 2 năm 2003. Sau khi tăng trưởng trền nền tảng khởi đầu hơn một năm họ đã phát hành phiên bản tiên phong ( 1.0 ) vào tháng 3 năm 2004. Sau khi phát hành nó đã nhận được nhiều sự chăm sóc của hội đồng Java .
Tuy nhiên, Spring Framework cũng chịu nhiều chỉ trích nặng nề năm 2004 và vẫn còn là chủ điểm của những cuộc tranh cãi đôi khi nóng bỏng. Vào thời điểm ra đời phiên bản đầu tiên nhiều lập trình viên cùng một số thành viên tiên phong thấy nhận thấy rằng Spring Framework là một phương hướng mới để thoát khỏi mô hình lập trình truyền thống[cần dẫn nguồn]. Điều này đặc biệt đúng đối với Enterprise JavaBean. Một trong những mục tiêu thiết kế Spring Framework là làm cho nó dễ dàng tích hợp với tiêu chuấn J2EE và các bộ công cụ có sẵn trên thị trường hiện nay. Ảnh hưởng của điều này là nó hầu như góp phần xóa bỏ nhu cầu phải định nghĩa các chức năng đặc trưng trên một bản tài liệu đặc tả chính thức do hội đồng quản lý, cái mà một số người đã từng phê phán[cần dẫn nguồn].
Spring Framework đã làm cho những kỹ thuật vốn không được biết đến mấy trở nên những kỹ thuật được mọi người ưa chuộng trong một thời gian ngắn ngủi[cần dẫn nguồn]. Một trong những kỹ thuật nổi tiếng hơn cả là kỹ thuật đảo ngược quyền điều khiển (Inversion of Control, IoC). Nội trong 2004, Spring Framework được rất nhiều người hưởng ứng và làm theo và cũng do tự chính nó cống hiến khung hình lập trình hướng khía cạnh (aspect-oriented programming) (AOP). Spring Framework đã tạo cơ hội cho mẫu hình lập trình này trở nên được ưa thích trong cộng đồng Java[cần dẫn nguồn].
Năm 2005 cho thấy mức độ hưởng ứng nâng cao hơn những năm trước, nguyên do cũng vì những xuất bản mới được ra với những cột mốc đáng kể và những tính năng mới được thêm vào. Diễn đàn Spring (Spring Forum) ra đời cuối năm 2004 cũng góp phần không nhỏ trong việc nâng cao tính phổ biến của framework hình, và từ đó đến nay đã sinh trưởng trở thành một nguồn thông tin quan trọng, giúp đỡ cho người sử dụng.
Trong cùng năm đó, những người tăng trưởng Spring Framework khởi thủy công ty riêng của họ để tương hỗ về mặt thương mại và đáng kể hơn cả là sự bắt tay cộng tác với BEA [ 1 ] Lưu trữ 2007 – 10-16 tại Wayback Machine. Vào tháng 12 năm 2005, hội thảo chiến lược tiên phong về Spring Framework đã được tổ chức triển khai tại Miami, Florida lôi cuốn 300 nhà tăng trưởng trong 3 ngày, và tiếp theo đó cuộc hội thảo chiến lược ở Antwerp vào tháng 6 năm 2006, lôi cuốn hơn 400 người .
Lịch sử phiên bản[sửa|sửa mã nguồn]
Phiên bản đầu tiên của Spring được viết bởi Rod Johnson, cùng lúc đó ông cũng cho ra cuốn sách Expert One-on-One J2EE Design and Development vào tháng 10 năm 2002. Ban đầu, framework được phát hành dưới Giấy phép Apache 2.0 vào tháng 06 2003. Cột mốc đầu tiên, bản 1.0, được phát hành tháng 03 năm 2004, và lần lượt các mốc phát hành kế tiếp vào tháng 09 năm 2004 và tháng 03 năm 2005. Phiên bản Spring 1.2.6 nhận Giải năng suất Jolt (Jolt Productivity award) và một Giải Cải tiến JAX (JAX Innovation Award) vào năm 2006.[2][3] Spring 2.0 was released in October 2006, Spring 2.5 in November 2007, Spring 3.0 in December 2009, Spring 3.1 in December 2011, and Spring 3.2.5 in November 2013.[4] Spring Framework 4.0 được phát hành vào tháng 12 năm 2013.[5] Cải tiến đáng chú ý của phiên bản này gồm có hỗ trợ Java SE 8, Groovy 2, một số phần của Java EE7, và WebSocket.
Spring Framework 4.2.0 được phát hành ngày 31 tháng 07 năm 2015 và ngay sau đó được nâng cấp lên phiên bản 4.2.1, được phát hành ngày 01 tháng 09 cùng năm.[6] Phiên bản này được mô tả là “tương thích với Java 6, 7 và 8, chú trọng vào những cải tiến cốt lõi và tính năng web hiện đại”.[6]
Spring Framework 4.3 được phát hành ngày 10 tháng 06 năm 2016. Phiên bản 4.3.0.RC1 [7] có hiệu lực. Nó “sẽ là thế hệ cuối cùng cho những yêu cầu của Spring 4 (Java 6+, Servlet 2.5+), chuẩn bị cho phiên bản mở rộng 4.3.x với thời gian hỗ trợ đến năm 2019”.[6]
Spring 5 được thông báo rằng sẽ dựng trên Reactive Streams tương thích với Reactor Core.[8]
Tính năng hầu hết[sửa|sửa mã nguồn]
Vì những khó khăn trong việc kiến lập một cấu trúc mạch lạc để thiết kế phần mô hình (Model part) trong chương trình ứng dụng, khi áp dụng mô hình MVC (design pattern) (ví như Struts), khả năng Spring tạo điều kiện cho người sử dụng làm việc một cách dễ dàng có nghĩa là các nhà xây dựng có thể nhanh chóng điều chỉnh lại những tiếp cận không thành quả của mình để lợi dụng tầng lớp JDBC trừu tượng của Spring Framework.
Spring Framework cung ứng những giải pháp cho nhiều thử thách kỹ thuật mà những nhà tăng trưởng ứng dụng Java và những tổ chức triển khai muốn tạo ứng dụng dựa trên nền tảng Java phải đương đầu với Java platform. Bởi vì số lượng lớn tính năng của Spring Framework, việc phân loại những bộ phận cơ bản kiến thiết nên framework là một việc rất khó. Spring Framework không chỉ được link riêng không liên quan gì đến nhau với Java Enterprise platform mặc dầu sự tích hợp sâu của Spring trong Java EE là một yếu tố quan trọng cho sự phổ dụng, nổi tiếng của nó .Có lẽ Spring Framework nổi tiếng nhất với sự cung ứng một cách hiệu suất cao những tính năng thiết yếu để tạo ra những ứng dụng thương mại phức tạp, vượt lên khỏi những quy mô lập trình từng chiếm vị trí lợi thế trong lịch sử vẻ vang ngành công nghiệp ứng dụng. Tiếp theo, nó cũng được ghi nhận về việc đưa những tính năng vốn ít được quen biết vào thực tiễn, có khi còn vượt cả ra bên ngoài nền tảng Java nữa .Thành quả của việc này là nó đã tạo nên một framework, cung ứng một quy mô đồng nhất và làm cho nó hoàn toàn có thể vận dụng vào hầu hết những loại ứng dụng được tạo trên nền tảng Java ngày này. framework Spring được coi như thực thi một cách thao tác dựa trên những thói quen thực hành thực tế tốt nhất và những tiêu chuẩn công nghiệp, và đồng thời tạo thời cơ cho những nghành nghề dịch vụ trong Java sử dụng nó .
Spring Framework được coi như là một tổng hợp của nhiều khung hình nhỏ, hay nói cách khác, nó là tổng hợp của khung hình trong khung hình. Đại bộ phận những khung hình này được phong cách thiết kế để hoạt động giải trí khác biệt với những khung hình khác, tuy nhiên lại tạo nên nhiều công dụng tốt hơn khi được phối hợp thao tác với nhau. Những khung hình này được phân loại theo những khối nền cơ bản mà những chương trình ứng dụng phức tạp nổi bật thường sử dụng :
- Khung chứa đảo ngược quyền điều khiển (Inversion of Control container): Sự cài đặt các thành phần của chương trình ứng dụng và quản lý chu trình của các đối tượng trong Java (lifecycle management of Java objects).
- Khung hình lập trình hướng khía cạnh (Aspect-oriented programming framework): Spring AOP module tích hợp chức năng lập trình hướng khía cạnh vào Spring framework thông qua cấu hình của nó. Spring AOP module cung cấp các dịch vụ quản lý giao dịch cho các đối tượng trong bất kỳ ứng dụng nào sử dụng Spring. Với Spring AOP chúng ta có thể tích hợp declarative transaction management vào trong ứng dụng mà không cần dựa vào EJB component.
Spring AOP module cũng đưa lập trình metadata vào trong Spring. Sử dụng cái này tất cả chúng ta hoàn toàn có thể thêm annotation vào source code để hướng dẫn Spring nơi và làm thế nào để liên hệ với aspect ..
- Khung hình truy cập dữ liệu (Data access framework):Tầng JDBC và DAO đưa ra một cây phân cấp exception để quản lý kết nối đến database, điều khiển exception và thông báo lỗi được ném bởi vendor của database. Tầng exception đơn giản điều khiển lỗi và giảm khối lượng code mà chúng ta cần viết như mở và đóng kết nối. Module này cũng cung cấp các dịch vụ quản lý giao dịch cho các đối tượng trong ứng dụng Spring..
- Khung hình quản lý giao dịch (Transaction processing / Transaction management framework): Sự đồng hòa các API quản lý giao dịch và sự điều hợp quản lý giao dịch đối với các đối tượng Java dùng phương pháp cài đặt.
- Khung hình mô hình-giao diện-điều khiển (Model-view-controller framework): Khung hình dựa trên nền tảng HTTP và Servlet cung cấp rất nhiều móc điểm có thể mở rộng và cải biên (extension and customization).
- Khung hình truy cập từ xa (Remote Access framework): Xuất nhập khẩu các đối tượng Java trên mạng lưới truyền thông hỗ trợ các giao thức dựa trên nền HTTP, sử dụng phong cách RPC (Remote procedure call) thông qua cài đặt, như RMI (Java remote method invocation – khởi động phương pháp từ xa trong Java), CORBA và dịch vụ mạng (web services – SOAP).
- Khung hình xác thực và ủy quyền (Authentication and authorization framework): Sự điều hợp các quá trình xác thực và ủy quyền thông qua cài đặt hỗ trợ nhiều tiêu chuẩn công nghiệp và những tiêu chuẩn được sử dụng phổ biến, cũng như các giao thức, công cụ và các thói quen thực hành phổ dụng.
- Khung hình quản lý từ xa (Remote Management framework): Sự quản lý và quảng bá các đối tượng Java đối với các bố trí địa phương và bố trí ngoại biên thông qua JMX (Java Management Extension – quản lý mở rộng của Java cho phép các phần mềm không trực thuộc Java có thể lắp ráp vào và sử dụng được trong nền tảng Java).
- Khung hình truyền thông điệp (Messaging framework): đăng ký các đối tượng lắng nghe thông điệp dùng để tiếp thu và sử dụng thông điệp từ các hàng thông điệp (message queue) thông qua JMS (Java Message Service – Dịch vụ Thông điệp của Java), cải tiến việc truyền gửi thông điệp dùng tiêu chuẩn trong API của JMS.
- Khung hình kiểm thử phần mềm (Software testing framework): Những chủ thể (lớp) hỗ trợ việc viết các kiểm thử đơn vị và các kiểm thử tích hợp (unit tests and integration tests).
Khung chứa đảo ngược quyền khống chế[sửa|sửa mã nguồn]
- Bài chính: Khung chứa cốt lõi của Spring (Spring core container)
Trọng tâm của Spring Framework là khung chứa đảo ngược quyền khống chế (Inversion of Control). Nó được sử dụng để cung cấp một phương pháp kiên định cài đặt và quản lý các đối tượng Java. Khung hình này còn được gọi là BeanFactory (Chủ thể chế xuất Bean), ApplicationContext (Ngữ cảnh của chương trình ứng dụng) và “khung chứa cốt lõi” (Core container).
Khung chứa có rất nhiều trách nhiệm và nhiều điểm mở rộng, và chúng hầu hết đều được coi như là những hình thức của đảo ngược quyền khống chế, thế cho nên mới có cái tên như vậy. Những ví dụ bao gồm: việc kiến tạo đối tượng, cài đặt đối tượng, khởi động các phương pháp khởi tạo (calling initialization methods) và truyền giao các đối tượng sang cho các đối tượng gọi lại đã đăng ký (registered callback objects). Tổ hợp của các chức năng trong khung chứa tạo nên chu kỳ của đối tượng và đây cũng chính là một trong những đặc trưng trọng yếu mà nó cung ứng.
Đối tượng do khung hình kiến tạo còn được gọi là “đối tượng đã quản” (Managed Objects) hoặc chủ thể “Beans”. Trong những trường hợp điển hình, khung hình được cài đặt bằng cách đọc các văn bản XML có chứa các “định nghĩa về chủ thể” (Bean definitions). Những bản định nghĩa này cung cấp các thông tin cần thiết để kiến tạo các đối tượng. Một khi các đối tượng đã được tạo dựng và cài đặt mà không có lỗi (without raising error conditions) thì chúng sẵn sàng để sử dụng. Người ta có thể truy cập các đối tượng bằng các phương pháp truy vấn phần phụ thuộc (Dependency lookup) hay DI (Dependency injection).
“Truy vấn phần phụ thuộc” là một mẫu hình, trong đó một chủ thể (caller) yêu cầu khung chứa đưa cho nó một đối tượng bằng một cái tên, hoặc một kiểu dữ liệu cụ thể (specific type) nào đấy. DI là một mẫu hình mà trong đó khung chứa truyền giao các đối tượng cho nhau bằng tên của chúng, thông qua những phương pháp khởi tạo (constructor), các đặc tính (properties) hoặc các phương pháp chế xuất (factory methods / Factory method pattern).
Trong nhiều trường hợp, khi sử dụng những phần khác của Spring Framework, yêu cầu sử dụng khung chứa không nhất thiết là một việc bắt buộc, song việc không sử dụng khung hình Spring rất có thể sẽ làm cho việc cài đặt và cải biên chương trình ứng dụng khó khăn hơn. Khung hình Spring cung cấp một cơ chế nhất quán ổn định cho việc cài đặt và tích hợp các chương trình ứng dụng với hầu hết các môi trường Java, từ những ứng dụng dùng trong phạm vị nhỏ cho đến các ứng dụng kinh doanh trên phạm vi lớn[cần dẫn nguồn].
Khung chứa hoàn toàn có thể được cải biến trở thành một khung hình thích hợp với EJB3 bằng cách sử dụng đề án Pitchfork. Bản thân đề án này không làm cho khung chứa trọn vẹn thích hợp với đặc tả EJB3. Spring Framework bị một số ít chỉ trích cho rằng nó không tuân theo những tiêu chuẩn. Interface21 cho rằng việc thích hợp với EJB3 không phải là một mục tiêu chính và công bố rằng Spring Framework cùng khung chứa được cho phép những quy mô lập trình có hiệu lực thực thi hiện hành hơn sinh trưởng [ 9 ] .
Liên kết ngoài[sửa|sửa mã nguồn]
Source: https://pokimobile.vn
Category: Hỏi Đáp