Spring OXM 快速指南



Spring OXM - 概述

Spring 框架使用全域性編組器/解組器介面提供物件/XML 或 O/X 對映,並允許輕鬆切換 O/X 對映框架。將物件轉換為 XML 的過程稱為 XML 編組/序列化,而將 XML 轉換為物件的轉換稱為 XML 解組/反序列化。

Spring 框架提供了一個 Marshaller 和 UnMarshaller 介面,其中 Marshaller 介面負責將物件編組到 XML,而 UnMarshaller 介面將 xml 反序列化為物件。以下是使用 Spring OXM 框架的主要好處。

  • 易於配置 - 使用 Spring bean 上下文工廠,編組器/解組器的建立非常容易,並且可以配置,而無需擔心 O/X 庫結構,如 JAXB 上下文、JiBX 繫結工廠等。編組器/解組器可以像任何其他 bean 一樣進行配置。

  • 一致的介面 - Marshaller 和 UnMarshaller 是全域性介面。這些介面在其他 O/X 對映框架之上提供了一個抽象層,並允許在它們之間切換而無需更改程式碼或只需進行少量程式碼更改。

  • 一致的異常處理 - 所有底層異常都被對映到 XmlMappingException 作為根異常。因此,開發人員無需擔心底層 O/X 對映工具自己的異常層次結構。

編組器

Marshaller 是一個具有單個方法 marshal 的介面。

public interface Marshaller {
   /**
      * Marshals the object graph with the given root into the provided Result.
   */
   void marshal(Object graph, Result result)
      throws XmlMappingException, IOException;
}

其中 graph 是任何要編組的物件,而 result 是一個標記介面,用於表示 XML 輸出。以下是可用的型別:

  • javax.xml.transform.dom.DOMResult - 表示 org.w3c.dom.Node。

  • javax.xml.transform.sax.SAXResult - 表示 org.xml.sax.ContentHandler。

  • javax.xml.transform.stream.StreamResult - 表示 java.io.File、java.io.OutputStream 或 java.io.Writer。

解組器

UnMarshaller 是一個具有單個方法 unmarshal 的介面。

public interface UnMarshaller {
   /**
      * Unmarshals the given provided Source into an object graph.
   */
   Object unmarshal(Source source)
      throws XmlMappingException, IOException;
}

其中 source 是一個標記介面,用於表示 XML 輸入。以下是可用的型別:

  • javax.xml.transform.dom.DOMSource - 表示 org.w3c.dom.Node。

  • javax.xml.transform.sax.SAXSource - 表示 org.xml.sax.InputSource 和 org.xml.sax.XMLReader。

  • javax.xml.transform.stream.StreamSource - 表示 java.io.File、java.io.InputStream 或 java.io.Reader。

Spring OXM - 環境設定

本章將指導您如何準備開發環境以開始使用 Spring 框架。它還將教您如何在設定 Spring 框架之前在您的機器上設定 JDK、Maven 和 Eclipse -

設定 Java 開發工具包 (JDK)

您可以從 Oracle 的 Java 網站下載最新版本的 SDK - Java SE 下載。 您將在下載的檔案中找到安裝 JDK 的說明,請按照給定的說明安裝和配置設定。最後設定 PATH 和 JAVA_HOME 環境變數以引用包含 java 和 javac 的目錄,通常分別為 java_install_dir/bin 和 java_install_dir。

如果您正在執行 Windows 並已將 JDK 安裝在 C:\jdk-11.0.11 中,則必須將以下行放入您的 C:\autoexec.bat 檔案中。

set PATH=C:\jdk-11.0.11;%PATH% 
set JAVA_HOME=C:\jdk-11.0.11 

或者,在 Windows NT/2000/XP 上,您需要右鍵單擊“我的電腦”,選擇“屬性”→“高階”→“環境變數”。然後,您需要更新 PATH 值並單擊“確定”按鈕。

在 Unix(Solaris、Linux 等)上,如果 SDK 安裝在 /usr/local/jdk-11.0.11 中並且您使用的是 C shell,則必須將以下內容放入您的 .cshrc 檔案中。

setenv PATH /usr/local/jdk-11.0.11/bin:$PATH 
setenv JAVA_HOME /usr/local/jdk-11.0.11

或者,如果您使用的是整合開發環境 (IDE),例如 Borland JBuilder、Eclipse、IntelliJ IDEA 或 Sun ONE Studio,則需要編譯並執行一個簡單的程式以確認 IDE 知道您已將 Java 安裝在何處。否則,您需要按照 IDE 文件中給出的說明進行正確的設定。

設定 Eclipse IDE

本教程中的所有示例均使用 Eclipse IDE 編寫。因此,我們建議您在您的機器上安裝最新版本的 Eclipse。

要安裝 Eclipse IDE,請從 www.eclipse.org/downloads 下載最新的 Eclipse 二進位制檔案。下載安裝後,將二進位制分發版解壓縮到一個方便的位置。例如,在 Windows 上的 C:\eclipse 中,或在 Linux/Unix 上的 /usr/local/eclipse 中,最後適當地設定 PATH 變數。

可以透過在 Windows 機器上執行以下命令啟動 Eclipse,或者您可以簡單地雙擊 eclipse.exe

%C:\eclipse\eclipse.exe 

可以透過在 Unix(Solaris、Linux 等)機器上執行以下命令啟動 Eclipse -

$/usr/local/eclipse/eclipse

成功啟動後,如果一切正常,則應顯示以下結果 -

Eclipse Home page

設定 Maven

在本教程中,我們使用 maven 來執行和構建基於 Spring 的示例。請按照 Maven - 環境設定 安裝 maven。

Spring OXM - 建立專案

使用 eclipse,選擇檔案新建Maven 專案。勾選建立簡單專案(跳過原型選擇)並點選下一步。

輸入詳細資訊,如下所示 -

  • groupId - com.tutorialspoint

  • artifactId - springoxm

  • version - 0.0.1-SNAPSHOT

  • name - Spring OXM

  • description - Spring OXM 專案

單擊“完成”按鈕,將建立一個新專案。

pom.xml

您可以檢查 pom.xml 的預設內容

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.tutorialspoint</groupId>
   <artifactId>springoxm</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>Spring OXM</name>
   <description>Spring OXM Project</description>
</project>

現在我們已經準備好專案了,讓我們在下一章中將以下依賴項新增到 pom.xml 中。

  • Spring Core

  • Spring OXM

  • JAXB

Spring OXM - 更新專案 JAXB2

更新 pom.xml 的內容,使其包含 spring core、spring oxm 和 jaxb 依賴項,如下所示 -

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.tutorialspoint</groupId>
   <artifactId>springoxm</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>Spring OXM</name>
   <description>Spring OXM Project</description>
   <properties>
      <org.springframework.version>4.3.7.RELEASE</org.springframework.version>
      <org.hibernate.version>5.2.9.Final</org.hibernate.version>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <java.version>1.8</java.version>    
   </properties> 	
   <dependencies>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-context</artifactId>
         <version>${org.springframework.version}</version>
         <scope>compile</scope>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-oxm</artifactId>
         <version>${org.springframework.version}</version>
         <scope>compile</scope>
      </dependency>
      <dependency>
         <groupId>javax.xml.bind</groupId>
         <artifactId>jaxb-api</artifactId>
         <version>2.3.1</version>
      </dependency>
      <dependency>
         <groupId>org.glassfish.jaxb</groupId>
         <artifactId>jaxb-runtime</artifactId>
         <version>2.3.1</version>
         <scope>runtime</scope>
      </dependency>      
   </dependencies>
   <build>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
               <source>${java.version}</source>
               <target>${java.version}</target>
            </configuration>
         </plugin>
      </plugins>
   </build>
</project>

建立一個名為Student.java的類,其中包含如下所示的 O/X 註解。

Student.java

package com.tutorialspoint.oxm.model;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Student{
   String name;
   int age;
   int id;

   public String getName(){
      return name;
   }
   @XmlElement
   public void setName(String name){
      this.name = name;
   }
   public int getAge(){
      return age;
   }
   @XmlElement
   public void setAge(int age){
      this.age = age;
   }
   public int getId(){
      return id;
   }
   @XmlAttribute
   public void setId(int id){
      this.id = id;
   }
}

src → main → resources中建立 applicationcontext.xml,其內容如下。

applicationcontext.xml

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
   xmlns:oxm="http://www.springframework.org/schema/oxm"  
   xsi:schemaLocation="http://www.springframework.org/schema/beans   
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
   http://www.springframework.org/schema/oxm  
   http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd">  

   <oxm:jaxb2-marshaller id="jaxbMarshaller">  
      <oxm:class-to-be-bound name="com.tutorialspoint.oxm.model.Student"/>  
   </oxm:jaxb2-marshaller>  
</beans>  

Spring OXM - 測試 JAXB2

建立一個名為OXMApplication.java的主類,其中包含編組器和解組器物件。此類的目的是使用編組器物件將學生物件編組到 student.xml 中,然後使用解組器物件將 student.xml 反序列化為學生物件。

示例

OXMApplication.java

package com.tutorialspoint.oxm;

import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.oxm.Marshaller;
import org.springframework.oxm.Unmarshaller;
import org.springframework.oxm.XmlMappingException;
import com.tutorialspoint.oxm.model.Student;

public class OXMApplication {
   public static void main(String[] args) {
      ApplicationContext context = new ClassPathXmlApplicationContext("applicationcontext.xml");  
      Marshaller marshaller = (Marshaller)context.getBean("jaxbMarshaller");
      Unmarshaller unmarshaller = (Unmarshaller)context.getBean("jaxbMarshaller");

      // create student object
      Student student = new Student();
      student.setAge(14);
      student.setName("Soniya");

      try {
         marshaller.marshal(student, new StreamResult(new FileWriter("student.xml")));  
         System.out.println("Student marshalled successfully.");  
         FileInputStream is =  new FileInputStream("student.xml");
         Student student1 = (Student)unmarshaller.unmarshal(new StreamSource(is));
         System.out.println("Age: " + student1.getAge() + ", Name: " + student1.getName());
      } catch(IOException | XmlMappingException ex) {
         ex.printStackTrace();
      }
   }
}

輸出

在 eclipse 中的檔案內容區域中右鍵單擊,然後選擇作為 Java 應用程式執行並驗證輸出。

Oct 10, 2021 8:48:12 PM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@1e127982: startup date 
[Sun Oct 10 20:48:12 IST 2021]; root of context hierarchy
Oct 10, 2021 8:48:12 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [applicationcontext.xml]
Oct 10, 2021 8:48:13 PM org.springframework.oxm.jaxb.Jaxb2Marshaller createJaxbContextFromClasses
INFO: Creating JAXBContext with classes to be bound [class com.tutorialspoint.oxm.model.Student]
Student marshalled successfully.
Age: 14, Name: Soniya

Spring OXM - 更新專案 XStream

更新 pom.xml 的內容,使其包含 xstream 依賴項,如下所示 -

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.tutorialspoint</groupId>
   <artifactId>springoxm</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>Spring OXM</name>
   <description>Spring OXM Project</description>
   <properties>
      <org.springframework.version>4.3.7.RELEASE</org.springframework.version>
      <org.hibernate.version>5.2.9.Final</org.hibernate.version>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <java.version>1.8</java.version>    
   </properties> 	
   <dependencies>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-context</artifactId>
         <version>${org.springframework.version}</version>
         <scope>compile</scope>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-oxm</artifactId>
         <version>${org.springframework.version}</version>
         <scope>compile</scope>
      </dependency>
      <dependency>
         <groupId>com.thoughtworks.xstream</groupId>
         <artifactId>xstream</artifactId>
         <version>1.4.8</version>
         <scope>compile</scope>
      </dependency>     
   </dependencies>
   <build>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
               <source>${java.version}</source>
               <target>${java.version}</target>
            </configuration>
         </plugin>
      </plugins>
   </build>
</project>

更新Student.java類,如下所示。

Student.java

package com.tutorialspoint.oxm.model;

public class Student {
   String name;
   int age;
   int id;

   public String getName(){
      return name;
   }
   public void setName(String name){
      this.name = name;
   }
   public int getAge(){
      return age;
   }
   public void setAge(int age){
      this.age = age;
   }
   public int getId(){
      return id;
   }
   public void setId(int id){
      this.id = id;
   }
}

src → main → resources中更新 applicationcontext.xml,其內容如下,以使用 XStreamMarshaller。XStreamMarshaller 物件可用於編組和解組。

applicationcontext.xml

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
   xmlns:oxm="http://www.springframework.org/schema/oxm"  
   xsi:schemaLocation="http://www.springframework.org/schema/beans   
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
   http://www.springframework.org/schema/oxm  
   http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd">  

   <bean id="xstreamMarshaller" class="org.springframework.oxm.xstream.XStreamMarshaller">  
      <property name="annotatedClasses" value="com.tutorialspoint.oxm.model.Student"></property>  
   </bean>   
</beans>  

Spring OXM - 測試 XStream

更新主類OXMApplication.java,其中包含編組器和解組器物件。此類的目的是使用編組器物件將學生物件編組到 student.xml 中,然後使用解組器物件將 student.xml 反序列化為學生物件。

示例

OXMApplication.java

package com.tutorialspoint.oxm;

import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.oxm.Marshaller;
import org.springframework.oxm.Unmarshaller;
import org.springframework.oxm.XmlMappingException;
import com.tutorialspoint.oxm.model.Student;

public class OXMApplication {
   public static void main(String[] args) {
      ApplicationContext context = new ClassPathXmlApplicationContext("applicationcontext.xml");  
      Marshaller marshaller = (Marshaller)context.getBean("xstreamMarshaller");
      Unmarshaller unmarshaller = (Unmarshaller)context.getBean("xstreamMarshaller");

      // create student object
      Student student = new Student();
      student.setAge(14);
      student.setName("Soniya");

      try {
         marshaller.marshal(student, new StreamResult(new FileWriter("student.xml")));  
         System.out.println("Student marshalled successfully.");  
         FileInputStream is =  new FileInputStream("student.xml");
         Student student1 = (Student)unmarshaller.unmarshal(new StreamSource(is));
         System.out.println("Age: " + student1.getAge() + ", Name: " + student1.getName());
      } catch(IOException | XmlMappingException ex) {
         ex.printStackTrace();
      }
   }
}

輸出

在 eclipse 中的檔案內容區域中右鍵單擊,然後選擇作為 Java 應用程式執行並驗證輸出。

Oct 11, 2021 9:18:37 AM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@29ca901e: startup date 
[Mon Oct 11 09:18:36 IST 2021]; root of context hierarchy
Oct 11, 2021 9:18:37 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [applicationcontext.xml]
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.thoughtworks.xstream.core.util.Fields 
(file:/C:/Users/intel/.m2/repository/com/thoughtworks/xstream/xstream/1.4.8/xstream-1.4.8.jar) 
to field java.util.TreeMap.comparator
WARNING: Please consider reporting this to the maintainers of com.thoughtworks.xstream.core.util.Fields
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Student marshalled successfully.
Age: 14, Name: Soniya

Spring OXM - 更新專案 Castor

更新 pom.xml 的內容,使其包含 castor 依賴項,如下所示 -

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.tutorialspoint</groupId>
   <artifactId>springoxm</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>Spring OXM</name>
   <description>Spring OXM Project</description>
   <properties>
      <org.springframework.version>4.3.7.RELEASE</org.springframework.version>
      <org.hibernate.version>5.2.9.Final</org.hibernate.version>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <java.version>1.8</java.version>    
   </properties> 	
   <dependencies>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-context</artifactId>
         <version>${org.springframework.version}</version>
         <scope>compile</scope>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-oxm</artifactId>
         <version>${org.springframework.version}</version>
         <scope>compile</scope>
      </dependency>
      <dependency>
         <groupId>org.codehaus.castor</groupId>
         <artifactId>castor-core</artifactId>
         <version>1.4.1</version>
      </dependency>   
      <dependency>
         <groupId>org.codehaus.castor</groupId>
         <artifactId>castor-xml</artifactId>
         <version>1.4.1</version>
      </dependency>
   </dependencies>
   <build>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
               <source>${java.version}</source>
               <target>${java.version}</target>
            </configuration>
         </plugin>
      </plugins>
   </build>
</project>

新增一個對映 xml,該 xml 用於 castor 對映以將Student類對映為mappings.xml,位於src → main → resources資料夾下,如下所示。

mappings.xml

<?xml version="1.0"?>  
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN" "http://castor.org/mapping.dtd">  
<mapping>  
   <class name="com.tutorialspoint.oxm.model.Student" auto-complete="true" >  
      <map-to xml="Student"/>  
      <field name="id" type="integer">  
         <bind-xml name="id" node="attribute"></bind-xml>  
      </field>  
      <field name="name">  
         <bind-xml name="name"></bind-xml>  
      </field>  
      <field name="age">  
         <bind-xml name="age" type="int"></bind-xml>  
      </field>          
   </class>      
</mapping>

src → main → resources中更新 applicationcontext.xml,其內容如下,以使用 CastorMarshaller。CastorMarshaller 物件可用於編組和解組。

applicationcontext.xml

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
   xmlns:oxm="http://www.springframework.org/schema/oxm"  
   xsi:schemaLocation="http://www.springframework.org/schema/beans   
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
   http://www.springframework.org/schema/oxm  
   http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd">  

   <bean id="castorMarshaller" class="org.springframework.oxm.castor.CastorMarshaller">  
      <property name="targetClass" value="com.tutorialspoint.oxm.model.Student"></property>  
      <property name="mappingLocation" value="mappings.xml"></property>  
   </bean>  
</beans>  

Spring OXM - 測試 Castor

更新主類OXMApplication.java,其中包含編組器和解組器物件。此類的目的是使用編組器物件將學生物件編組到 student.xml 中,然後使用解組器物件將 student.xml 反序列化為學生物件。

示例

OXMApplication.java

package com.tutorialspoint.oxm;

import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.oxm.Marshaller;
import org.springframework.oxm.Unmarshaller;
import org.springframework.oxm.XmlMappingException;
import com.tutorialspoint.oxm.model.Student;

public class OXMApplication {
   public static void main(String[] args) {
      ApplicationContext context = new ClassPathXmlApplicationContext("applicationcontext.xml");  
      Marshaller marshaller = (Marshaller)context.getBean("castorMarshaller");
      Unmarshaller unmarshaller = (Unmarshaller)context.getBean("castorMarshaller");

      // create student object
      Student student = new Student();
      student.setAge(14);
      student.setName("Soniya");

      try {
         marshaller.marshal(student, new StreamResult(new FileWriter("student.xml")));  
         System.out.println("Student marshalled successfully.");  
         FileInputStream is =  new FileInputStream("student.xml");
         Student student1 = (Student)unmarshaller.unmarshal(new StreamSource(is));
         System.out.println("Age: " + student1.getAge() + ", Name: " + student1.getName());
      } catch(IOException | XmlMappingException ex) {
         ex.printStackTrace();
      }
   }
}

輸出

在 eclipse 中的檔案內容區域中右鍵單擊,然後選擇作為 Java 應用程式執行並驗證輸出。

Oct 11, 2021 9:45:34 AM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@6adede5: startup date 
[Mon Oct 11 09:45:34 IST 2021]; root of context hierarchy
Oct 11, 2021 9:45:35 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [applicationcontext.xml]
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.exolab.castor.xml.BaseXercesOutputFormat 
(file:/C:/Users/intel/.m2/repository/org/codehaus/castor/castor-xml/1.4.1/castor-xml-1.4.1.jar) 
to method com.sun.org.apache.xml.internal.serialize.OutputFormat.setMethod(java.lang.String)
WARNING: Please consider reporting this to the maintainers of org.exolab.castor.xml.BaseXercesOutputFormat
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations.
WARNING: All illegal access operations will be denied in a future release
Student marshalled successfully.
Age: 14, Name: Soniya
廣告

© . All rights reserved.