Tag <beans> trong xml

Chào anh chị!

<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:mvc="http://www.springframework.org/schema/mvc"  
    xsi:schemaLocation="  
        http://www.springframework.org/schema/beans  
        http://www.springframework.org/schema/beans/spring-beans.xsd  
        http://www.springframework.org/schema/context  
        http://www.springframework.org/schema/context/spring-context.xsd  
        http://www.springframework.org/schema/mvc  
        http://www.springframework.org/schema/mvc/spring-mvc.xsd"></beans>

Cái này trong file spring.xml có ý nghĩa gì vậy anh chị? Thiếu nó thì có ảnh hưởng tới tốc độ load hay không load được trang hay không?

EDIT (@library): @lqcuong99 cậu nhớ dùng Markdown để format code cho các post sau nhé!

1 Like

Theo như mình tìm hiểu, thì beans về cơ bản là những object được điều khiển bởi Spring IoC.

3 Likes

Thank anh, ý em muốn hỏi cái xmlns (xml namespace) với schemaLocation có ý nghĩa gì không chứ mỗi lần tạo project là phải đi copy về mà chưa thực sự hiểu tác dụng cũng như cách hoạt động của nó lắm. :smiley:

Theo ý hiểu


Đầu tiên, thì một tài liệu xml sẽ bao gồm nhiều elements bên trong nó, element thì có các attributes.
xmlns viết tắt của xml namespace, mục đích đặt namespace để tránh xung đột tên (với những element cùng loại nhưng khác cấu trúc).
VD cùng element <bean>, bạn khai báo 2 thể loại với cấu trúc khác nhau:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
          <property name="suffix" value=".jsp" />
   </bean>
<!--and-->
<bean className="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <attribute fname="suffix" view=".jsp"/>
</bean>

thì, XML parser hoặc cơ chế xử lý XML sẽ ko xử lý được.


Để khai báo namespace cho 1 element dùng cấu trúc: xmlns:prefix="URI". Khai báo default namespace xmlns="namespaceURI".
cụ thể, xmlns="http://www.springframework.org/schema/beans" có nghĩa là tất cả bean bạn khai báo đều có namespace là "http://www.springframework.org/schema/beans", thay vì khai báo namespace prefix là "http://www.springframework.org/schema/beans" cho tất cả child element thì bạn dùng default.

Ý nghĩa thứ 2 là sử dụng lại định nghĩa beans sẵn có của spring. Nghĩa là trong beans element, bạn hoàn toàn có thể khai báo bean với namespace khác, nhưng bạn sẽ khai báo một thứ hoàn toàn khác spring bean hoặc định nghĩa lại 1 thứ đã có sẵn.


xmlns:xsixsi:schemaLocation thì liên quan tới schema instance (XML Schema Instance viết tắt xsi). Ngắn gọn thì schema định nghĩa cấu trúc của một tài liệu xml.

  • xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance": định nghĩa cấu trúc xml chuẩn như syntax, rule, element gì gì đấy, dùng chung cho mọi tài liệu xml

  • xsi:schemaLocation: cấu trúc gồm 2 phần, phần đầu là namespace, phần 2 là uri refer tới tài liệu schema được sử dụng. Spring dùng xsd schema, bạn bấm vào đường link sẽ thấy, muốn hiểu thì học xsd syntax

3 Likes

Thực sự thì chưa hiểu lắm nhưng rất cảm ơn anh đã dành thời gian bình luận chi tiết vậy. Chắc phải đọc thêm tài liệu về mấy cái này, chứ làm mà hiểu mờ mờ thì cũng như không.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?