Spring framework xin chào thế giới

Mình không muốn giới thiệu Spring framework là cái gì bởi vì cái này có đầy rẫy trên mạng, mang tính lý thuyết nhiều quá nên ở bài viết này, mình chỉ tập trung vào những điểm cốt lõi, cần thiết để các bạn có thể làm cho Spring nói “Chào thế giới”, 😀

Spring framework sử dụng ý tưởng của Dependency Injection để hiện thực framework của mình. Đó là lý do tại sao mình lại viết bài Dependency Injection trước khi đến bài viết này 😀

Như các bạn đã biết, ý tưởng của Dependency Injection là bạn không phụ thuộc vào ai cả, khi cần ai thì bạn gọi người đó. Nhưng câu hỏi đặt ra là người các bạn gọi từ đâu mà có? Nói gần gũi với Java hơn là đối tượng các bạn cần được chứa ở đâu?

Trong Spring framework, Spring sẽ có một container để chứa tất cả các đối tượng mà các bạn cần, tiếng Anh gọi là Spring container. Khi các bạn cần đối tượng nào, bạn chỉ cần gọi Spring cung cấp cho các bạn nếu nó có, nó không có thì cũng chịu, 😀

OK, thực tế cái lý thuyết trên như thế nào, mình sẽ làm một cái demo cho các bạn dễ nắm nhé!

Đầu tiên, chúng ta cần tạo một project để làm việc. Các bạn có thể dùng IDE nào mà các bạn thích: Eclipse, Netbean, IntellJ IDEA đều được.

Hồi trước mình toàn dùng Eclipse nhưng sau này đi làm, làm nhiều với Spring nên chuyển qua dùng Spring Tool Suite luôn. IDE này core là của Eclipse nhưng có sẵn nhiều thứ hỗ trợ cho Spring nên cũng tiện để dùng.

Đầu tiên, hãy tạo mới một Maven project nhé các bạn!

Spring framework xin chào thế giới

Mình sẽ sử dụng Java 17 cho project này:

Để có thể sử dụng được Spring, chúng ta cần phải thêm dependency của nó. Hãy mở tập tin pom.xml trong thư mục project của các bạn rồi thêm những dòng sau vào nhé:

Bây giờ, để Spring có thể nói “Chào thế giới”, chúng ta cần một đối tượng có thể làm được điều đó trước.

Nội dung của class SayHello như sau:

Sau đó, chúng ta sẽ thêm đối tượng này vào Spring container.

Spring đang quản lý các đối tượng bằng 2 cách, cách thứ nhất là bằng một tập tin XML và cách thứ hai là bằng các Annotation. Trong bài viết này mình chỉ đề cập đến XML thôi, còn Annotation sẽ đề cập trong các bài viết khác các bạn nhé!

OK, bây giờ các bạn hãy tạo một tập tin XML nằm trong thư mục /src/main/resources của project nhé! Các tập tin cấu hình của Spring nên nằm ở đây.

Nội dung của tập tin spring.xml như sau

Với khai báo trên, Spring sẽ tự động tạo mới một đối tượng cho class SayHello, gán cho nó một id và chứa nó trong khung chứa của mình.

Như các bạn thấy, Spring coi các đối tượng của chúng ta là những beansmỗi bean sẽ có một id riêng và bạn sẽ dùng id này để gọi đến đối tượng mà các bạn cần.

Hãy xem Spring nói “Chào thế giới” như thế nào nhé!

Kết quả:

3.6/5 - (7 bình chọn)

21 thoughts on “Spring framework xin chào thế giới

  1. Anh ơi em vẫn chưa hiểu, sao không viết SayHello sayHello = new SayHello(); sayHello.say(); luôn cho nhanh hả anh. Anh giải thích cho em tại sao phải add vào Spring đi ạ

  2. Khi minh run Application thi console bao loi Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory

    1. Lỗi này liên quan đến Logging, bạn tạo Maven project như thế nào thế?
      Nếu được, hãy gửi project đó cho mình để mình support bạn tốt hơn.

  3. mấy bài anh viết ngắn nhưng chất không tưởng,hy vọng anh co thêm nhiều bài viết Java và Spring,như Spring security chẳng hạn 😀

          1. chỗ này đơn giản chỉ có vài cái, còn mấy cái project em thấy thì có rất nhiều cái khai báo xmlns này. Em thắc mắc là sài cái gì thì phải khai báo cái này, làm sao để biết khi nào mình cần khai báo mấy thứ này, chứ copy lỡ copy có khi thiếu có khi thừa.

          2. Đúng rồi em, cần dùng cái gì thì mới khai báo vào. Ở đây, anh chỉ dùng tag bean của Spring nên anh chỉ khai báo nhiêu đó thôi. Thật ra, đây là những XML namespaces (em có thể tìm hiểu thêm ở đây). Ví dụ, nếu anh có dùng Spring AOP trong tập tin cấu hình của Spring nữa thì cần phải khai báo thêm xmlns:aop=”http://www.springframework.org/schema/aop”.

Add Comment