1. 程式人生 > >javaEE開發中遇到的常見配置解析,XML和註解

javaEE開發中遇到的常見配置解析,XML和註解

  • 1.名詞解釋
  • 1.1XML(能力有限,加上初學,複製貼上時內容紛亂,重複,大家可以直接跳轉到文末總結部分)

一種用於儲存和傳輸資料的可擴充套件標記語言。就是用一系列標記來描述資料,然後在利用對應的XML解析器來解析資料。

網上找的簡單示例:

<?xml version="1.0" encoding="UTF-8"?>

<note>

<to>Tove</to>

<from>Jani</from>

<heading>Reminder</heading>

<body>Don't forget me this weekend!</body>

</note>

使用樹結構,且必須有一個根節點(root node),更多關於XML的學習資料可自行網上查詢。

本文主要講的是javaEE開發中用到的一些XML配置檔案的使用

先來一個大家最常見到的web.xml

<?xml version="1.0" encoding="UTF-8"?> <!--每個xml檔案必須有的,且獨立放在文件的開頭 --> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee                       http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd

"          version="3.1"          metadata-complete="true">

</web-app>

<web-app> <web-app>是整個文件的根節點

xmlns  XML Namespaces的縮寫)是一個屬性,是XML名稱空間。作用是賦予名稱空間一個唯一的名稱,避免命名衝突(標記同名而意義不同產生的歧義)。 

可以在文件中定義一個或多個可供選擇的名稱空間。

該屬性可以放置在文件內任何元素的開始標籤中。該屬性的值類似於 URL,它定義了一個名稱空間,瀏覽器會將此名稱空間用於該屬性所在元素內的所有內容。

xsi  (xml schema instance)  具體的xml schema例項

xsi:schemaLocation    定義了XML Namespace和對應的XSD(Xml Schema Definition)文件的位置的關係。它的值由一個或多個URI引用對組成,兩個URI之間以空白符分隔(空格和換行均可)。第一個URI是定義的XML Namespace的值,第二個URI給出Schema文件的位置,Schema處理器將從這個位置讀取Schema文件,該文件的targetNamespace必須與第一個URI相匹配

以上是使用XSD文件限定

還可以使用DTD文件限定,文件型別定義(Document Type Definition)是一套為了進行程式間的資料交換而建立的關於標記符的語法規則。是HTML和XML規格的一部分,可通過比較文件和文件型別定義檔案來檢查文件是否符合規範,元素和標籤使用是否正確。

例如strus.xml配置

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC         "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"         "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>

</struts>

<!DOCTYPE 文件型別

struts 文件的根節點

PUBLIC  公共標識,唯一性,類似與xsd中的namespace的作用(只是一個比喻)

  • 1.2註解

元資料,即一種描述資料的資料。所以,可以說註解就是原始碼的元資料。Annotation是一種應用於類、方法、引數、變數、構造器及包宣告中的特殊修飾符。

為什麼要引入註解?

在使用Annotation之前,XML被廣泛的應用於描述元資料,XML配置是為了分離程式碼和配置而引入的。

但一些工程師在工作中又希望使用一些和程式碼緊耦合的東西,而不是像XML那樣和程式碼是鬆耦合的(在某些情況下甚至是完全分離的)程式碼描述。

兩者看起來似乎背道而馳,不過在不同的應用場景,二者各有利弊。目前,許多框架將XML和Annotation兩種方式結合使用,相互補充不足。

假如你想為應用設定很多的常量或引數,這種情況下,XML是一個很好的選擇,因為它不會與特定的程式碼相連。如果你想把某個方法宣告為服務,那麼使用Annotation會更好一些,因為這種情況下需要註解和方法緊密耦合起來。

  • 2.XML

SSH框架常用到的XML配置

struts.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC         "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"         "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>     <!--告知struts2執行時,使用spring建立物件-->     <constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory"/>     <!--第一步,先定義一個包-->     <package name="mypack001" extends="struts-default">     <!--第二步,定義一個action,配置跳轉資訊,此處action的class不是全限定名,對應於spring中的配置,路徑為/WEB-INF/jsp/index.jsp是為了防止jsp不經過action直接訪問-->     <action name="Index" class="myIndexAction">         <result name="success">/WEB-INF/jsp/index.jsp</result>     </action>     </package> </struts>

applicationContext.xml

配置spring容器,並整合hibernate配置檔案(最後一句黑體部分)

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!--所有需要類的例項都由spring管理-->     <bean id="myIndexAction" class="main.ssh.action.IndexAction" scope="prototype">         <property name="is" ref="myIndexService"/>     </bean>

    <bean id="myIndexService" class="main.ssh.service.IndexServiceImpl" scope="prototype"><property name="id" ref="myIndexDao"/>     </bean>

    <bean id="myIndexDao" class="main.ssh.dao.IndexDaoImpl" scope="prototype">         <property name="sessionFactory" ref="sessionFactory"/>     </bean>

    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean" scope="prototype">         <property name="configLocation" value="classpath:hibernate.cfg.xml"/>     </bean></beans>

hibernate.cfg.xml

hibernate主要配置檔案

<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC     "-//Hibernate/Hibernate Configuration DTD//EN"     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration>   <session-factory>     <!--連線資料庫的驅動-->     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>     <!--連線資料庫使用者名稱-->       <property name="hibernate.connection.username">root</property>       <!--連線資料庫的密碼-->       <property name="hibernate.connection.password">12345677</property>       <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/sshhello</property>     <!--操作資料庫時,會向控制檯列印sql-->     <property name="show_sql">true</property>     <!--列印語句前會先格式化sql語句-->     <property name="format_sql">true</property>     <!--hbm2dd1.auto生成表結構的策略配置,update(如果當前資料庫不存在表結構會自動建立,如果存在表結構但與實體不一致,會修改表結構,保留原有列)-->     <property name="hbm2ddl.auto">update</property>     <!--資料庫方言配置,選擇最短的-->     <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>     <!--事務自動提交-->     <property name="hibernate.connection.autocommit">true</property>     <!--將Session與執行緒繫結,只有進行了該配置才能使用getCurrentSession-->     <property name="hibernate.current_session_context_class">thread</property>       <mapping resource="main/ssh/entity/BookCard.hbm.xml"/>       <!--引入ORM對映檔案-->       <mapping class="main.ssh.entity.BookCard"/>   </session-factory> </hibernate-configuration>

實體類對映配置檔案  實體類名.hbm.xml

本例BookCard.hbm.xml

<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-mapping PUBLIC     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping>

    <class name="main.ssh.entity.BookCard" table="book_card" schema="sshhello">         <id name="cid" column="cid">             <generator class="native"/>         </id>         <property name="name" column="name"/>         <property name="sex" column="sex"/>         <property name="cardDate" column="cardDate"/>         <property name="deposit" column="deposit"/>     </class> </hibernate-mapping>

web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee                       http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"          version="3.1"          metadata-complete="true">

  <display-name>Welcome to Tomcat</display-name>   <welcome-file-list>       <welcome-file>index.action</welcome-file>   </welcome-file-list>     <!--struts2過濾器--> <filter>     <filter-name>struts2</filter-name>     <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter>     <filter-mapping>         <filter-name>struts2</filter-name>         <url-pattern>/*</url-pattern>     </filter-mapping>     <!--spring監聽器-->     <context-param>         <param-name>contextConfigLocation</param-name>         <param-value>classpath:applicationContext.xml</param-value>     </context-param>     <listener>         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>     </listener> </web-app>  

SSM框架配置

web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"          version="2.5">     <display-name>SSM</display-name>     <welcome-file-list>         <welcome-file>index.jsp</welcome-file>     </welcome-file-list>     <!-- spring監聽器 -->     <listener>         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>     </listener>     <!-- 指定spring核心配置檔案 -->     <context-param>         <param-name>contextConfigLocation</param-name>         <param-value>classpath:spring-mvc.xml</param-value>     </context-param>     <!-- 配置過濾器處理POST提交亂碼問題 -->     <filter>         <filter-name>encoding</filter-name>         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>         <init-param>             <param-name>encoding</param-name>             <param-value>UTF-8</param-value>         </init-param>     </filter>     <filter-mapping>         <filter-name>encoding</filter-name>         <url-pattern>/*</url-pattern>     </filter-mapping>     <!-- 配置前端控制器 -->     <!-- 配置DispatcherServlet -->     <servlet>         <servlet-name>springDispatcherServlet</servlet-name>         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>         <!-- 配置Spring mvc下的配置檔案的位置和名稱,如果不設定,預設找/WEB-INF/<servlet-name>-servlet.xml -->         <init-param>             <param-name>contextConfigLocation</param-name>             <param-value>classpath:spring/springmvc-config.xml</param-value>         </init-param>         <load-on-startup>1</load-on-startup>     </servlet>     <servlet-mapping>         <servlet-name>springDispatcherServlet</servlet-name>         <url-pattern>/</url-pattern>     </servlet-mapping> </web-app> 

springMVC配置

spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xmlns="http://www.springframework.org/schema/beans"        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-4.2.xsd       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd       http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">     <!--spring和springMVC的配置合併-->     <!-- 配置掃描註解 @Controller @Service -->     <context:component-scan base-package="com."/>     <!-- SpringMVC使用<mvc:annotation-driven>自動載入RequestMappingHandlerMapping和RequestMappingHandlerAdapter -->     <mvc:annotation-driven/>     <!-- 配置靜態資源對映 -->     <!--  <mvc:resources location="/js/" mapping="/js/**"/>  <mvc:resources location="/css/" mapping="/css/**"/>  <mvc:resources location="/imgs/" mapping="/imgs/**"/>  <mvc:resources location="/font/" mapping="/font/**"/>  -->     <!-- 配置檢視解析器-->     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">         <!-- 配置邏輯檢視的字首 -->         <property name="prefix" value="/WEB-INF/jsp/"/>         <!-- 配置邏輯檢視的字尾 -->         <property name="suffix" value=".jsp"/>     </bean> </beans>

<?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:p="http://www.springframework.org/schema/p"        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-3.1.xsd                         http://www.springframework.org/schema/context                         http://www.springframework.org/schema/context/spring-context-3.1.xsd                         http://www.springframework.org/schema/mvc                         http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">     <!-- 自動掃描 -->     <context:component-scan base-package="cn.code2038" />     <!-- 引入配置檔案 -->     <bean id="propertyConfigurer"           class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">         <property name="location" value="classpath:jdbc.properties" />     </bean>

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"           destroy-method="close">         <property name="driverClassName" value="${driver}" />         <property name="url" value="${url}" />         <property name="username" value="${username}" />         <property name="password" value="${password}" />         <!-- 初始化連線大小 -->         <property name="initialSize" value="${initialSize}"></property>         <!-- 連線池最大數量 -->         <property name="maxActive" value="${maxActive}"></property>         <!-- 連線池最大空閒 -->         <property name="maxIdle" value="${maxIdle}"></property>         <!-- 連線池最小空閒 -->         <property name="minIdle" value="${minIdle}"></property>         <!-- 獲取連線最大等待時間 -->         <property name="maxWait" value="${maxWait}"></property>     </bean>

    <!-- spring和MyBatis完美整合,不需要mybatis的配置對映檔案 -->     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">         <property name="dataSource" ref="dataSource" />         <!-- 自動掃描mapping.xml檔案 -->         <property name="mapperLocations" value="classpath:cn/code2038/mapping/*.xml"/>     </bean>

    <!-- DAO介面所在包名,Spring會自動查詢其下的類 -->     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">         <property name="basePackage" value="cn.code2038.dao" />         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>     </bean>

    <!-- (事務管理)transaction manager, use JtaTransactionManager for global tx -->     <bean id="transactionManager"           class="org.springframework.jdbc.datasource.DataSourceTransactionManager">         <property name="dataSource" ref="dataSource" />     </bean>

</beans>mybatis sql語句對映配置

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration>     <!--給實體類取別名-->     <typeAliases>

    </typeAliases> </configuration>

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="space.DAO.UserDao">

    <select id="getUserById" resultType="space.xxhui.POJO.User">         SELECT * FROM USER WHERE id = #{id};     </select>

    <!--auto generated Code-->     <resultMap id="AllColumnMap" type="space.xxhui.POJO.User">         <result column="name" property="name"/>         <result column="birth" property="birth"/>         <result column="sex" property="sex"/>         <result column="age" property="age"/>         <result column="phone" property="phone"/>         <result column="email" property="email"/>         <result column="pwd" property="pwd"/>     </resultMap>

    <!--auto generated Code-->     <sql id="all_column">         `name`,         `birth`,         `sex`,         `age`,         `phone`,         `email`,         `pwd`     </sql>

    <!--auto generated Code-->     <insert id="insert" useGeneratedKeys="true" keyProperty="pojo.name">         INSERT INTO user (             `name`,             `birth`,             `sex`,             `age`,             `phone`,             `email`,             `pwd`         ) VALUES (             #{pojo.name},             #{pojo.birth},             #{pojo.sex},             #{pojo.age},             #{pojo.phone},             #{pojo.email},             #{pojo.pwd}         )     </insert>

    <!--auto generated Code-->     <insert id="insertSelective" useGeneratedKeys="true" keyProperty="pojo.name">         INSERT INTO user         <trim prefix="(" suffix=")" suffixOverrides=",">             <if test="pojo.name!=null"> `name`,</if>             <if test="pojo.birth!=null"> `birth`,</if>             <if test="pojo.sex!=null"> `sex`,</if>             <if test="pojo.age!=null"> `age`,</if>             <if test="pojo.phone!=null"> `phone`,</if>             <if test="pojo.email!=null"> `email`,</if>             <if test="pojo.pwd!=null"> `pwd`,</if>         </trim>         VALUES         <trim prefix="(" suffix=")" suffixOverrides=",">             <if test="pojo.name!=null">#{pojo.name},</if>             <if test="pojo.birth!=null">#{pojo.birth},</if>             <if test="pojo.sex!=null">#{pojo.sex},</if>             <if test="pojo.age!=null">#{pojo.age},</if>             <if test="pojo.phone!=null">#{pojo.phone},</if>             <if test="pojo.email!=null">#{pojo.email},</if>             <if test="pojo.pwd!=null">#{pojo.pwd},</if>         </trim>     </insert>

    <!--auto generated Code-->     <insert id="insertList">         INSERT INTO user (         <include refid="all_column"/>         )VALUES         <foreach collection="pojos" item="pojo" index="index" separator=",">             (             #{pojo.name},             #{pojo.birth},             #{pojo.sex},             #{pojo.age},             #{pojo.phone},             #{pojo.email},             #{pojo.pwd}             )         </foreach>     </insert>

    <!--auto generated Code-->     <update id="update">         UPDATE user         <set>             <if test="pojo.name != null"> `name` = #{pojo.name}, </if>             <if test="pojo.birth != null"> `birth` = #{pojo.birth}, </if>             <if test="pojo.sex != null"> `sex` = #{pojo.sex}, </if>             <if test="pojo.age != null"> `age` = #{pojo.age}, </if>             <if test="pojo.phone != null"> `phone` = #{pojo.phone}, </if>             <if test="pojo.email != null"> `email` = #{pojo.email}, </if>             <if test="pojo.pwd != null"> `pwd` = #{pojo.pwd} </if>         </set>         WHERE name = #{pojo.name}     </update> </mapper>

jdbc.properties

driver=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/ssmhello?useSSL="false" username=root [email protected] #定義初始連線數 initialSize=0 #定義最大連線數 maxActive=20 #定義最大空閒 maxIdle=20 #定義最小空閒 minIdle=1 #定義最長等待時間 maxWait=60000 log4j.properties

#定義LOG輸出級別 log4j.rootLogger=INFO,Console,File #定義日誌輸出目的地為控制檯 log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.Target=System.out #可以靈活地指定日誌輸出格式,下面一行是指定具體的格式 log4j.appender.Console.layout = org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n

#檔案大小到達指定尺寸的時候產生一個新的檔案 log4j.appender.File = org.apache.log4j.RollingFileAppender #指定輸出目錄 log4j.appender.File.File = logs/ssm.log #定義檔案最大大小 log4j.appender.File.MaxFileSize = 10MB # 輸出所以日誌,如果換成DEBUG表示輸出DEBUG以上級別日誌 log4j.appender.File.Threshold = ALL log4j.appender.File.layout = org.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n   依賴配置檔案pom.xml

<?xml version="1.0" encoding="UTF-8"?> <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 http://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelVersion>4.0.0</modelVersion>

    <groupId>springboot.example</groupId>     <artifactId>spring-boot-hello</artifactId>     <version>1.0-SNAPSHOT</version>

    <packaging>jar</packaging>

    <parent>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-parent</artifactId>         <version>1.3.2.RELEASE</version>     </parent>     <dependencies>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-web</artifactId>             <version>1.3.2.RELEASE</version>         </dependency>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-data-jpa</artifactId>         </dependency>         <dependency>             <groupId>mysql</groupId>             <artifactId>mysql-connector-java</artifactId>             <scope>runtime</scope>         </dependency>         <dependency>             <groupId>junit</groupId>             <artifactId>junit</artifactId>             <scope>test</scope>         </dependency>         <dependency>             <groupId>org.springframework</groupId>             <artifactId>spring-test</artifactId>             <version>4.1.2.RELEASE</version>         </dependency>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-configuration-processor</artifactId>             <optional>true</optional>         </dependency>     </dependencies>

    <build>         <plugins>             <plugin>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-maven-plugin</artifactId>                 <executions>                     <execution>                         <goals>                             <goal>repackage</goal>                         </goals>                     </execution>                 </executions>             </plugin>         </plugins>     </build>

</project>

總結:

如果你能看到這裡,我都佩服

實在是太亂了,由於初學,腦子裡一團麻,沒有整體結構。

不過學習就在於折騰,爬過一個又一個坑,會發現柳暗花明又一村。

查詢資料學習時候,由於每個人配置時命名不同,有的人將兩個甚至更多配置弄到了一個xml中。

這就會造成好多配置缺失,或重複,結構之混亂不可言說。

在某個瞬間,腦子靈光一閃,xml的名字並不是那麼重要的,關鍵在於標記(畢竟是標記語言)

但標記也不是隨便用的,關鍵還是在於DTD和XSD

這樣就清晰了

注意以下只是為了分析的簡化表示,具體使用需完整描述

配置web.xml,用到web-app根節點

<?xml version="1.0" encoding="UTF-8"?><web-app web-app_2_5.xsd>         <web-app>

配置用到struts根節點

<!DOCTYPE struts PUBLIC         "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"         "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>         </struts>

用到spring-bean,spring框架的配置

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

<bean></bean>

</beans>

hibernate的配置,需要用到hibernate-configuratin根節點

<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC     "-//Hibernate/Hibernate Configuration DTD//EN"     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration>  </hibernate-configuration>

hibernate對映配置,用到<hibernate-mapping>節點

<!DOCTYPE hibernate-mapping PUBLIC     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping>  <hibernate-mapping>

需要在spring-bean中用到 <context:    /> 和<mvc:   />

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xmlns="http://www.springframework.org/schema/beans"        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-4.2.xsd       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd       http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">

mybatis的<configuration> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> </configuration>

mybatis的對映配置<mapper>配置<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="space.DAO.UserDao">

    <select id="getUserById" resultType="space.xxhui.POJO.User">         SELECT * FROM USER WHERE id = #{id};     </select>

</mapper>

基礎不牢,地動山搖。

深刻理解的自己的不足,繼續補基礎去。

正所謂,不識廬山真面目,只因俺在此山中。

文中配置多為借鑑各博文學習SSH,SSM框架時,複製別人的,多有重複,請見諒。大家可以採用文末的方法,DTD,XSD加以甄別剔除。

關於註解在開發框架中的應用以及XML配置中具體標籤和屬性的使用方法,本人理解還不夠,繼續學習,後續在更吧.........................................................

本人能力有限,有什麼錯誤,希望大家不吝指教

歡迎留言補充交流