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
</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配置中具體標籤和屬性的使用方法,本人理解還不夠,繼續學習,後續在更吧.........................................................
本人能力有限,有什麼錯誤,希望大家不吝指教
歡迎留言補充交流