﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-☆-文章分类-Spring技术</title><link>http://www.blogjava.net/lizhuxin/category/33775.html</link><description>☆</description><language>zh-cn</language><lastBuildDate>Sat, 16 Aug 2008 00:35:07 GMT</lastBuildDate><pubDate>Sat, 16 Aug 2008 00:35:07 GMT</pubDate><ttl>60</ttl><item><title>Spring基础知识与配置</title><link>http://www.blogjava.net/lizhuxin/articles/221968.html</link><dc:creator>☆</dc:creator><author>☆</author><pubDate>Thu, 14 Aug 2008 04:57:00 GMT</pubDate><guid>http://www.blogjava.net/lizhuxin/articles/221968.html</guid><wfw:comment>http://www.blogjava.net/lizhuxin/comments/221968.html</wfw:comment><comments>http://www.blogjava.net/lizhuxin/articles/221968.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/lizhuxin/comments/commentRss/221968.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/lizhuxin/services/trackbacks/221968.html</trackback:ping><description><![CDATA[Spring基础知识与配置：<br />
<br />
&nbsp;
<p style="text-indent: 14pt"><span style="font-size: 14pt; color: green; font-family: 黑体">2.1 Spring</span><span style="font-size: 14pt; color: green; font-family: 黑体">框架介绍</span></p>
<p style="text-indent: 15.75pt"><span style="color: black; font-family: 宋体">Spring </span><span style="color: black; font-family: 宋体">框架是一个分层架构，由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上，核心容器定义了创建、配置和管理 bean 的方式，可以用下图表示：</span></p>
<p style="text-indent: 15.75pt"><span style="color: blue; font-family: 宋体">1)Spring Core</span><span style="color: blue; font-family: 宋体">：</span><span style="color: black; font-family: 宋体">核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory，它是工厂模式的实现。BeanFactory 使用控制反转 （IOC） 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。</span></p>
<p style="text-indent: 15.75pt"><span style="color: blue; font-family: 宋体">2) Spring Context</span><span style="color: blue; font-family: 宋体">：</span><span style="color: black; font-family: 宋体">Spring </span><span style="color: black; font-family: 宋体">上下文是一个配置文件，向 Spring 框架提供上下文信息。Spring 上下文包括企业服务，例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。</span></p>
<p style="text-indent: 15.75pt"><span style="color: blue; font-family: 宋体">3)</span><span style="color: blue; font-family: 宋体">Spring AOP</span><span style="color: blue; font-family: 宋体">：</span><span style="color: black; font-family: 宋体">通过配置管理特性，Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以，可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP，不用依赖 EJB 组件，就可以将声明性事务管理集成到应用程序中。</span></p>
<p style="text-indent: 15.75pt"><span style="color: blue; font-family: 宋体">4)</span><span style="color: blue; font-family: 宋体">Spring DAO</span><span style="color: blue; font-family: 宋体">：</span><span style="color: black; font-family: 宋体">JDBC DAO </span><span style="color: black; font-family: 宋体">抽象层提供了有意义的异常层次结构，可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理，并且极大地降低了需要编写的异常代码数量（例如打开和关闭连接）。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。</span></p>
<p style="text-indent: 15.75pt"><span style="color: blue; font-family: 宋体">5)</span><span style="color: blue; font-family: 宋体">Spring ORM</span><span style="color: blue; font-family: 宋体">：</span><span style="color: black; font-family: 宋体">Spring </span><span style="color: black; font-family: 宋体">框架插入了若干个 ORM 框架，从而提供了 ORM 的对象关系工具，其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。</span></p>
<p style="text-indent: 15.75pt"><span style="color: blue; font-family: 宋体">6)</span><span style="color: blue; font-family: 宋体">Spring Web </span><span style="color: blue; font-family: 宋体">模块：</span><span style="color: black; font-family: 宋体">Web </span><span style="color: black; font-family: 宋体">上下文模块建立在应用程序上下文模块之上，为基于 Web 的应用程序提供了上下文。所以，Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。</span></p>
<p style="text-indent: 15.75pt"><span style="color: blue; font-family: 宋体">7)</span><span style="color: blue; font-family: 宋体">Spring MVC </span><span style="color: blue; font-family: 宋体">框架：</span><span style="color: black; font-family: 宋体">MVC </span><span style="color: black; font-family: 宋体">框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口，MVC 框架变成为高度可配置的，MVC 容纳了大量视图技术，其中包括 JSP、Velocity、Tiles、iText 和 POI。</span></p>
<p style="text-indent: 14pt"><span style="font-size: 14pt; color: green; font-family: 黑体">2.2 CRM</span><span style="font-size: 14pt; color: green; font-family: 黑体">系统中Spring的应用</span></p>
<p><span style="font-size: 14pt; color: blue; font-family: 黑体">&nbsp;</span><span style="color: blue; font-family: 宋体">&nbsp;1) applicationContext.xml</span><span style="color: blue; font-family: 宋体">配置文件</span></p>
<p style="text-indent: 31.5pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">和数据库的连接是通过注入的方式实现的，将数据库驱动</span><span style="color: black; font-family: 宋体">"driverClassName"</span><span style="color: black; font-family: 宋体">、数据库连接"url"、用户名"dev_frame"和密码"password"注入到org.springframework.jdbc.datasource.DriverManagerDataSource，实现和数据库建立连接。</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&lt;bean id="dataSource"</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">class="org.springframework.jdbc.datasource.DriverManagerDataSource"&gt;</span></p>
<p style="text-indent: 10.5pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">&lt;property name="driverClassName"</span></p>
<p style="text-indent: 15.75pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">value="oracle.jdbc.driver.OracleDriver" /&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&lt;property name="url"</span></p>
<p style="text-indent: 21pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">value="jdbc:oracle:thin:@www.boncsoft.com:1521:UTF8" /&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&lt;property name="username" value="dev_frame" /&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&lt;property name="password" value="********" /&gt;</span></p>
<p><span style="color: black; font-family: 宋体">&lt;/bean&gt;</span></p>
<p><span style="color: black; font-family: 宋体">然后，定义一个实体的管理工场，并将数据源</span><span style="color: black; font-family: 宋体">"dataSource"</span><span style="color: black; font-family: 宋体">注入</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&lt;bean id="entityManagerFactory"</span></p>
<p style="margin-left: 20.35pt; text-indent: -5.25pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp; &lt;property name="dataSource" ref="dataSource" /&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp; &lt;property name="jpaVendorAdapter"&gt;</span></p>
<p style="margin-left: 30.85pt; text-indent: -15.75pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">&lt;bean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp; &lt;property name="database" value="ORACLE" /&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp; &lt;property name="showSql" value="true" /&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp; &lt;property name="generateDdl" value="false" /&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp; &lt;/bean&gt;</span></p>
<p style="text-indent: 10.5pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">&lt;/property&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&lt;/bean&gt;</span></p>
<p><span style="color: black; font-family: 宋体">最后，定义一个事物的管理工场"transactionManager"，将实工场</span><span style="color: black; font-family: 宋体">"entityManagerFactory" </span><span style="color: black; font-family: 宋体">注入</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&lt;bean id="transactionManager"</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp; class="org.springframework.orm.jpa.JpaTransactionManager"&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp; &lt;property name="entityManagerFactory" ref="entityManagerFactory" /&gt;</span></p>
<p><span style="color: black; font-family: 宋体">&lt;/bean&gt;</span></p>
<p><span style="color: blue; font-family: 宋体">2) applicationContext_crm_project.xml</span><span style="color: blue; font-family: 宋体">配置文件</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&nbsp;</span><span style="color: black; font-family: 宋体">在applicationContext_crm_project.xml配置文件中，主要配DAO层、Model层和Action层。如下例所示：</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">DAO</span><span style="color: black; font-family: 宋体">配置：</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&lt;bean id="crm.dao.project.ProjectDAO"</span></p>
<p style="text-indent: 5.25pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">class="com.cbsst.crm.dao.project.ProjectDAOImpl" scope="prototype"&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp; &lt;property name="entityManagerFactory" ref="entityManagerFactory" /&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&lt;/bean&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">Model</span><span style="color: black; font-family: 宋体">层配置:</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&lt;bean id="crm.model.project.ProjectModel"</span></p>
<p style="text-indent: 21pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">class="com.cbsst.crm.model.project.ProjectModelImpl"</span></p>
<p style="text-indent: 31.5pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">scope="prototype"&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp; &lt;property name="projectDAO" ref="crm.dao.project.ProjectDAO"&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp; &lt;/property&gt;</span></p>
<p style="text-indent: 26.25pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">&lt;property name="commonDAO" ref="crm.dao.project.CommonDAO"&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&lt;/property&gt;&lt;/bean&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&lt;property&gt;</span><span style="color: black; font-family: 宋体">标签是一个属性标签，上面&lt;property&gt;标签是指将id为"crm.dao.project.ProjectDAO"的类注入到model中的一个属性为"projectDAO"的变量，将id为"crm.dao.project.CommonDAO"的类注入到model中的一个属性为"commonDAO"的变量。</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">Action</span><span style="color: black; font-family: 宋体">层配置：</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&lt;bean id="crm.action.project.ProjectAction"</span></p>
<p style="margin-left: 15.75pt; text-indent: -15.75pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">&nbsp;&nbsp; class="com.cbsst.crm.action.project.ProjectAction" scope="prototype"&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp; &lt;property name="projectModel"</span></p>
<p style="text-indent: 42pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">ref="crm.model.project.ProjectModel" /&gt;</span></p>
<p style="text-indent: 21pt; text-align: left" align="left"><span style="color: black; font-family: 宋体">&lt;property name="commonManagerModel"</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ref="frame.model.common.CommonManagerModel" /&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">&lt;/bean&gt;</span></p>
<p style="text-align: left" align="left"><span style="color: black; font-family: 宋体">和DAO层的配置类似。</span></p>
<img src ="http://www.blogjava.net/lizhuxin/aggbug/221968.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/lizhuxin/" target="_blank">☆</a> 2008-08-14 12:57 <a href="http://www.blogjava.net/lizhuxin/articles/221968.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>