﻿<?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/iamlibo/category/33097.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 23 Dec 2013 13:41:58 GMT</lastBuildDate><pubDate>Mon, 23 Dec 2013 13:41:58 GMT</pubDate><ttl>60</ttl><item><title>Spring 3.2  JPA2.0 XML 配置方式</title><link>http://www.blogjava.net/iamlibo/archive/2013/12/19/407775.html</link><dc:creator>Libo</dc:creator><author>Libo</author><pubDate>Thu, 19 Dec 2013 08:17:00 GMT</pubDate><guid>http://www.blogjava.net/iamlibo/archive/2013/12/19/407775.html</guid><wfw:comment>http://www.blogjava.net/iamlibo/comments/407775.html</wfw:comment><comments>http://www.blogjava.net/iamlibo/archive/2013/12/19/407775.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iamlibo/comments/commentRss/407775.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iamlibo/services/trackbacks/407775.html</trackback:ping><description><![CDATA[<span style="font-size:11.0pt; font-family:宋体;Times New Roman&quot;;">使用</span><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;Times New Roman&quot;;">maven</span><span style="font-size:11.0pt;font-family:宋体;Times New Roman&quot;;">工程，</span><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;Times New Roman&quot;;">pom.xml</span><span style="font-size:11.0pt;font-family:宋体;Times New Roman&quot;;">文件如下<br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dependencies</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span>org.springframework<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span>spring-context<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span>3.2.4.RELEASE<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span>org.springframework<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span>spring-orm<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span>3.2.4.RELEASE<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span>org.quartz-scheduler<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span>quartz<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span>1.8.5<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span>org.hibernate.javax.persistence<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span>hibernate-jpa-2.0-api<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span>1.0.1.Final<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span>org.hibernate<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span>hibernate-core<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span>4.2.8.Final<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">&nbsp;for&nbsp;JPA,&nbsp;use&nbsp;hibernate-entitymanager&nbsp;instead&nbsp;of&nbsp;hibernate-core&nbsp;</span><span style="color: #008000; ">--&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span>org.hibernate<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span>hibernate-entitymanager<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span>4.2.8.Final<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span>mysql<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span>mysql-connector-java<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span>5.1.27<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">&nbsp;&lt;dependency&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;cglib&lt;/groupId&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;cglib&lt;/artifactId&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;3.0&lt;/version&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/dependency&gt;</span><span style="color: #008000; ">--&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span>org.springframework<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span>spring-test<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span>3.2.4.RELEASE<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">scope</span><span style="color: #0000FF; ">&gt;</span>test<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">scope</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dependencies</span><span style="color: #0000FF; ">&gt;</span></div><span style="font-size:11.0pt;font-family:宋体;Times New Roman&quot;;"><br />dao接口如下：<br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;cn.test.dao;<br /><br /><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*&nbsp;Created&nbsp;by&nbsp;libo&nbsp;on&nbsp;13-12-19.<br />&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">interface</span>&nbsp;IDao&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;save(Object&nbsp;entity);<br />}</div><span style="font-size:11.0pt;font-family:宋体;Times New Roman&quot;;"><br />dao实现类如下：<br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;cn.test.dao;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;org.springframework.stereotype.Component;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;javax.persistence.EntityManager;<br /><span style="color: #0000FF; ">import</span>&nbsp;javax.persistence.PersistenceContext;<br /><br /><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*&nbsp;Created&nbsp;by&nbsp;libo&nbsp;on&nbsp;13-12-19.<br />&nbsp;</span><span style="color: #008000; ">*/</span><br />@Component<br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;DaoJpaImpl&nbsp;<span style="color: #0000FF; ">implements</span>&nbsp;IDao&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@PersistenceContext<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;EntityManager&nbsp;entityManager;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;save(Object&nbsp;entity)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;entityManager.persist(entity);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div><span style="font-size:11.0pt;font-family:宋体;Times New Roman&quot;;"><br />service 接口：<br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;cn.test.service;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;cn.test.entity.User;<br /><br /><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*&nbsp;Created&nbsp;by&nbsp;libo&nbsp;on&nbsp;13-12-19.<br />&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">interface</span>&nbsp;UserService&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;save(User&nbsp;user);<br />}</div><span style="font-size:11.0pt;font-family:宋体;Times New Roman&quot;;"><br />service 实现类：<br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;cn.test.service;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;cn.test.dao.IDao;<br /><span style="color: #0000FF; ">import</span>&nbsp;cn.test.entity.User;<br /><span style="color: #0000FF; ">import</span>&nbsp;org.springframework.beans.factory.annotation.Autowired;<br /><span style="color: #0000FF; ">import</span>&nbsp;org.springframework.stereotype.Service;<br /><span style="color: #0000FF; ">import</span>&nbsp;org.springframework.transaction.annotation.Transactional;<br /><br /><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*&nbsp;Created&nbsp;by&nbsp;libo&nbsp;on&nbsp;13-12-19.<br />&nbsp;</span><span style="color: #008000; ">*/</span><br />@Service<br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;UserServiceImpl&nbsp;<span style="color: #0000FF; ">implements</span>&nbsp;UserService&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Autowired<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;IDao&nbsp;iDao;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">@Transactional(propagation=&nbsp;Propagation.REQUIRED)</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;@Transactional(readOnly&nbsp;=&nbsp;<span style="color: #0000FF; ">false</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;save(User&nbsp;user)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iDao.save(user);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div><span style="font-size:11.0pt;font-family:宋体;Times New Roman&quot;;">实体类：<br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;cn.test.entity;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;javax.persistence.Entity;<br /><span style="color: #0000FF; ">import</span>&nbsp;javax.persistence.Id;<br /><span style="color: #0000FF; ">import</span>&nbsp;javax.persistence.Table;<br /><span style="color: #0000FF; ">import</span>&nbsp;java.io.Serializable;<br /><br /><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*&nbsp;Created&nbsp;by&nbsp;libo&nbsp;on&nbsp;13-12-19.<br />&nbsp;</span><span style="color: #008000; ">*/</span><br />@Entity<br />@Table(name&nbsp;=&nbsp;"myUser")<br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;User&nbsp;<span style="color: #0000FF; ">implements</span>&nbsp;Serializable{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Id<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;String&nbsp;id;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;String&nbsp;name;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;age;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;getId()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;id;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;setId(String&nbsp;id)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.id&nbsp;=&nbsp;id;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;getAge()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;age;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;setAge(<span style="color: #0000FF; ">int</span>&nbsp;age)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.age&nbsp;=&nbsp;age;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;getName()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;setName(String&nbsp;name)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.name&nbsp;=&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div><span style="font-size:11.0pt;font-family:宋体;Times New Roman&quot;;"><br />spring-config.xml 其中</span><span style="color: #800000; font-size: 13px; background-color: #eeeeee;">task相关内容可以删除</span><br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000FF; ">?&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">beans&nbsp;</span><span style="color: #FF0000; ">xmlns</span><span style="color: #0000FF; ">="http://www.springframework.org/schema/beans"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns:tx</span><span style="color: #0000FF; ">="http://www.springframework.org/schema/tx"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns:task</span><span style="color: #0000FF; ">="http://www.springframework.org/schema/task"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns:context</span><span style="color: #0000FF; ">="http://www.springframework.org/schema/context"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi</span><span style="color: #0000FF; ">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation</span><span style="color: #0000FF; ">="http://www.springframework.org/schema/beans&nbsp;http://www.springframework.org/schema/beans/spring-beans.xsd&nbsp;http://www.springframework.org/schema/task<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/task/spring-task-3.1.xsd&nbsp;http://www.springframework.org/schema/context<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/context/spring-context-3.1.xsd&nbsp;http://www.springframework.org/schema/tx&nbsp;http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">context:annotation-config</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">context:component-scan&nbsp;</span><span style="color: #FF0000; ">base-package</span><span style="color: #0000FF; ">="cn.test"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">task:annotation-driven</span><span style="color: #0000FF; ">/&gt;</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">bean&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="em"</span><span style="color: #FF0000; ">&nbsp;class</span><span style="color: #0000FF; ">="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="dataSource"</span><span style="color: #FF0000; ">&nbsp;ref</span><span style="color: #0000FF; ">="dataSource"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="packagesToScan"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="cn.test.entity"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="jpaVendorAdapter"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">bean&nbsp;</span><span style="color: #FF0000; ">class</span><span style="color: #0000FF; ">="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">property</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="jpaProperties"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">props</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">prop&nbsp;</span><span style="color: #FF0000; ">key</span><span style="color: #0000FF; ">="hibernate.hbm2ddl.auto"</span><span style="color: #0000FF; ">&gt;</span>update<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">prop</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">prop&nbsp;</span><span style="color: #FF0000; ">key</span><span style="color: #0000FF; ">="hibernate.dialect"</span><span style="color: #0000FF; ">&gt;</span>org.hibernate.dialect.MySQL5Dialect<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">prop</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">props</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">property</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">bean</span><span style="color: #0000FF; ">&gt;</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">bean&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="dataSource"</span><span style="color: #FF0000; ">&nbsp;class</span><span style="color: #0000FF; ">="org.springframework.jdbc.datasource.DriverManagerDataSource"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="driverClassName"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="com.mysql.jdbc.Driver"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="url"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="jdbc:mysql://localhost:3306/spring_jpa"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="username"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="root"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="password"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="123456"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">bean</span><span style="color: #0000FF; ">&gt;</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">bean&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="transactionManager"</span><span style="color: #FF0000; ">&nbsp;class</span><span style="color: #0000FF; ">="org.springframework.orm.jpa.JpaTransactionManager"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="entityManagerFactory"</span><span style="color: #FF0000; ">&nbsp;ref</span><span style="color: #0000FF; ">="em"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">bean</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">&nbsp;可以使用@Transactional配置事务&nbsp;</span><span style="color: #008000; ">--&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">tx:annotation-driven&nbsp;</span><span style="color: #FF0000; ">transaction-manager</span><span style="color: #0000FF; ">="transactionManager"</span><span style="color: #0000FF; ">/&gt;</span><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">bean&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="persistenceExceptionTranslationPostProcessor"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="color: #0000FF; ">="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"</span><span style="color: #0000FF; ">/&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">beans</span><span style="color: #0000FF; ">&gt;</span></div><span style="font-size:11.0pt;font-family:宋体;Times New Roman&quot;;"><br />测试类：<br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;cn.test.service;<br /><br /><span style="color: #0000FF; ">import</span>&nbsp;cn.test.entity.User;<br /><span style="color: #0000FF; ">import</span>&nbsp;org.junit.Test;<br /><span style="color: #0000FF; ">import</span>&nbsp;org.junit.runner.RunWith;<br /><span style="color: #0000FF; ">import</span>&nbsp;org.springframework.beans.factory.annotation.Autowired;<br /><span style="color: #0000FF; ">import</span>&nbsp;org.springframework.test.context.ContextConfiguration;<br /><span style="color: #0000FF; ">import</span>&nbsp;org.springframework.test.context.junit4.SpringJUnit4ClassRunner;<br /><br /><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;*&nbsp;Created&nbsp;by&nbsp;libo&nbsp;on&nbsp;13-12-19.<br />&nbsp;</span><span style="color: #008000; ">*/</span><br />@RunWith(SpringJUnit4ClassRunner.<span style="color: #0000FF; ">class</span>)<br />@ContextConfiguration(locations&nbsp;=&nbsp;"classpath:spring-config.xml")<br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;UserServiceImplTest&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Autowired<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;UserService&nbsp;userService;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Test<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;testSave()&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;Exception&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;User&nbsp;user&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;User();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setId("u_id");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setName("u_name");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user.setAge(23);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userService.save(user);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div><span style="font-size: 11pt; font-family: 宋体;"><br />运行Junit测试就可以了。连接的是MySQL数据库<br /><br />end.<br /></span><img src ="http://www.blogjava.net/iamlibo/aggbug/407775.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iamlibo/" target="_blank">Libo</a> 2013-12-19 16:17 <a href="http://www.blogjava.net/iamlibo/archive/2013/12/19/407775.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2 Action 与Spring bean 作用域</title><link>http://www.blogjava.net/iamlibo/archive/2012/05/30/379590.html</link><dc:creator>Libo</dc:creator><author>Libo</author><pubDate>Wed, 30 May 2012 13:29:00 GMT</pubDate><guid>http://www.blogjava.net/iamlibo/archive/2012/05/30/379590.html</guid><wfw:comment>http://www.blogjava.net/iamlibo/comments/379590.html</wfw:comment><comments>http://www.blogjava.net/iamlibo/archive/2012/05/30/379590.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iamlibo/comments/commentRss/379590.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iamlibo/services/trackbacks/379590.html</trackback:ping><description><![CDATA[<p><span style="color:black; font-size:9pt"><span style="font-family:Verdana">struts2 </span><span style="font-family:宋体">的</span><span style="font-family:Verdana">action </span><span style="font-family:宋体">是没有</span><span style="font-family:Verdana">scope</span><span style="font-family:宋体">的，但通过引用</span><span style="font-family:Verdana">spring bean </span><span style="font-family:宋体">可以达到有</span><span style="font-family:Verdana">scope</span><span style="font-family:宋体">功能。</span><span style="font-family:Verdana">
			</span></span></p><p>
 </p><p>
 </p><p style="background: #fafafa; margin-left: 11pt"><span style="color:black; font-family:Verdana; font-size:9pt">&lt;action name="xxxAction" class="xxxBean"&gt;
</span></p><p style="background: #fafafa; margin-left: 11pt"><span style="color:black; font-family:Verdana; font-size:9pt">    &lt;result name="success" &gt;/success.jsp&lt;/result&gt;
</span></p><p style="background: #fafafa; margin-left: 11pt"><span style="color:black; font-family:Verdana; font-size:9pt">&lt;/action&gt;
</span></p><p>
 </p><p><span style="color:black; font-size:9pt"><span style="font-family:Verdana"> xxxBean</span><span style="font-family:宋体">是在</span><span style="font-family:Verdana">spring</span><span style="font-family:宋体">中配置的</span><span style="font-family:Verdana">session</span><span style="font-family:宋体">作用域的</span><span style="font-family:Verdana">bean.
</span></span></p><p>
 </p><p style="background: #fafafa; margin-left: 11pt"><span style="color:black; font-family:Verdana; font-size:9pt">@Service(value = "xxxBean")
</span></p><p style="background: #fafafa; margin-left: 11pt"><span style="color:black; font-family:Verdana; font-size:9pt">@Scope(value = "session")
</span></p><p style="background: #fafafa; margin-left: 11pt"><span style="color:black; font-family:Verdana; font-size:9pt">public class XxxAction {
</span></p><p style="background: #fafafa; margin-left: 11pt"><span style="color:black; font-family:Verdana; font-size:9pt">...
</span></p><p style="background: #fafafa; margin-left: 11pt"><span style="color:black; font-family:Verdana; font-size:9pt">}
</span></p><p> 
 </p><p>
 </p><p><span style="color:black; font-size:9pt"><span style="font-family:宋体">想把</span><span style="font-family:Verdana">action</span><span style="font-family:宋体">放到</span><span style="font-family:Verdana">session</span><span style="font-family:宋体">作用域</span><span style="font-family:Verdana">(</span><span style="font-family:宋体">因为一些特殊操作传参等</span><span style="font-family:Verdana">)</span><span style="font-family:宋体">，但所有</span><span style="font-family:Verdana">action</span><span style="font-family:宋体">都放到</span><span style="font-family:Verdana">session</span><span style="font-family:宋体">会头大的！！</span><span style="font-family:Verdana">
			</span></span></p><p>
 </p><p><span style="color:black; font-size:9pt"><span style="font-family:宋体">经过测试发现一个办法，就是把不用的</span><span style="font-family:Verdana">xxxAction</span><span style="font-family:宋体">在适当的时候从</span><span style="font-family:Verdana">session</span><span style="font-family:宋体">当中清除掉，这样再下次使用（没有关闭窗口的情况）的时候会再次创建</span><span style="font-family:Verdana">xxxBean</span><span style="font-family:宋体">。</span><span style="font-family:Verdana">
			</span></span></p><p>
 </p><p><span style="color:black; font-size:9pt"><span style="font-family:宋体">现在的难点在于什么时候清除比较合适，一般一个</span><span style="font-family:Verdana">action</span><span style="font-family:宋体">都是负责一个功能，比如用户的增、删、改查等，不会涉及到其他对象，采购单的增、删、改、查。这样就可以在通过菜单切换功能（从用户界面切到采购单界面）的时候将刚刚使用的用户的</span><span style="font-family:Verdana">action</span><span style="font-family:宋体">从</span><span style="font-family:Verdana">session</span><span style="font-family:宋体">当中清除。</span><span style="font-family:Verdana">
			</span></span></p><p>
 </p><p><span style="color:black; font-size:9pt"><span style="font-family:宋体">基于这样的思路，使用</span><span style="font-family:Verdana">struts2 </span><span style="font-family:宋体">的拦截器（</span><span style="font-family:Verdana">Interceptor</span><span style="font-family:宋体">）来监听特定的</span><span style="font-family:Verdana">action</span><span style="font-family:宋体">，在菜单切换的时候从</span><span style="font-family:Verdana">session</span><span style="font-family:宋体">中清除不用的</span><span style="font-family:Verdana">action</span><span style="font-family:宋体">。</span><span style="font-family:Verdana">
			</span></span></p><p>
 </p><p>
 </p><p><span style="color:black; font-size:9pt"><span style="font-family:宋体">欢迎提出各种看法！</span><span style="font-family:Verdana">
			</span></span></p><p>
 </p><p><span style="color:black; font-family:Verdana; font-size:9pt">
		</span> </p><img src ="http://www.blogjava.net/iamlibo/aggbug/379590.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iamlibo/" target="_blank">Libo</a> 2012-05-30 21:29 <a href="http://www.blogjava.net/iamlibo/archive/2012/05/30/379590.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF2.0 与Spring 3.0 集成</title><link>http://www.blogjava.net/iamlibo/archive/2010/04/24/319264.html</link><dc:creator>Libo</dc:creator><author>Libo</author><pubDate>Sat, 24 Apr 2010 07:03:00 GMT</pubDate><guid>http://www.blogjava.net/iamlibo/archive/2010/04/24/319264.html</guid><wfw:comment>http://www.blogjava.net/iamlibo/comments/319264.html</wfw:comment><comments>http://www.blogjava.net/iamlibo/archive/2010/04/24/319264.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/iamlibo/comments/commentRss/319264.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iamlibo/services/trackbacks/319264.html</trackback:ping><description><![CDATA[<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CUsers%5Clibo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" /><!--[if gte mso 9]><![endif]-->
<link rel="themeData" href="file:///C:%5CUsers%5Clibo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Clibo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE
</xml><![endif]--><!--[if gte mso 9]><![endif]--><style>
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:""@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:"Calibri","sans-serif";
mso-bidi-font-family:"Times New Roman";}
.MsoChpDefault
{
mso-bidi-font-family:"Times New Roman";}
/* Page Definitions */
@page
{}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{
mso-style-parent:"";
font-size:10.5pt;
font-family:"Calibri","sans-serif";
mso-bidi-font-family:"Times New Roman";}
</style>
<![endif]-->
<p>JSF2.0 <span style="font-family: 宋体;">与Spring 3.0 </span><span style="font-family: 宋体;">集成</span></p>
<p><span style="font-family: 宋体;">同以前的</span>JSF1.2<span style="font-family: 宋体;">与</span>Spring2.5<span style="font-family: 宋体;">集成类似，只是有一些类名的变化。</span></p>
<p><span style="font-family: 宋体;">web.xml 代码如下：</span></p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">context-param</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">contextConfigLocation</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">param-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param-value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">WEB-INF/applicationContext.xml</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">param-value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">context-param</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">listener</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">listener-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">com.sun.faces.config.ConfigureListener</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">listener-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">listener</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">listener</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">listener-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">&nbsp;org.springframework.web.context.ContextLoaderListener<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">listener-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">listener</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">listener</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">listener-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org.springframework.web.context.request.RequestContextListener</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">listener-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">listener</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Faces&nbsp;Servlet</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">javax.faces.webapp.FacesServlet</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">load-on-startup</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">1</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">load-on-startup</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet-mapping</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Faces&nbsp;Servlet</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">*.xhtml</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet-mapping</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet-mapping</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">servlet-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Faces&nbsp;Servlet</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">*.jsf</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">servlet-mapping</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">context-param</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">javax.faces.PROJECT_STAGE</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">param-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">param-value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">Development</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">param-value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">context-param</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">welcome-file-list</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">welcome-file</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">index.html</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">welcome-file</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">welcome-file-list</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;"><br />
</span></div>
<p><br />
</p>
<p>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CUsers%5Clibo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" /><!--[if gte mso 9]><![endif]-->
<link rel="themeData" href="file:///C:%5CUsers%5Clibo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Clibo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE
</xml><![endif]--><!--[if gte mso 9]><![endif]--><style>
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:""@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:"Calibri","sans-serif";
mso-bidi-font-family:"Times New Roman";}
.MsoChpDefault
{
mso-bidi-font-family:"Times New Roman";}
/* Page Definitions */
@page
{}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{
mso-style-parent:"";
font-size:10.5pt;
font-family:"Calibri","sans-serif";
mso-bidi-font-family:"Times New Roman";}
</style>
<![endif]-->
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000e1;">Faces-config.xml</span><span style="font-size: 10pt; font-family: 宋体; color: #0000e1;">中加入：</span></p>
</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">el-resolver</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">org.springframework.web.jsf.el.SpringBeanFacesELResolver</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">el-resolver</span><span style="color: #0000ff;">&gt;</span></div>
<p>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CUsers%5Clibo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" /><!--[if gte mso 9]><![endif]-->
<link rel="themeData" href="file:///C:%5CUsers%5Clibo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Clibo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE
</xml><![endif]--><!--[if gte mso 9]><![endif]--><style>
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:""@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:"Calibri","sans-serif";
mso-bidi-font-family:"Times New Roman";}
.MsoChpDefault
{
mso-bidi-font-family:"Times New Roman";}
/* Page Definitions */
@page
{}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{
mso-style-parent:"";
font-size:10.5pt;
font-family:"Calibri","sans-serif";
mso-bidi-font-family:"Times New Roman";}
</style>
<![endif]--><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">JSF1.2</span><span style="font-size: 10.5pt; font-family: 宋体;">和</span><span style="font-size: 10.5pt; font-family: &quot;Calibri&quot;,&quot;sans-serif&quot;;">1.2</span><span style="font-size: 10.5pt; font-family: 宋体;">以前是加入</span></p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">variable-resolver</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">org.springframework.web.jsf.DelegatingVariableResolver</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">variable-resolver</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span></div>
<p>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CUsers%5Clibo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" /><!--[if gte mso 9]><![endif]-->
<link rel="themeData" href="file:///C:%5CUsers%5Clibo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Clibo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE
</xml><![endif]--><!--[if gte mso 9]><![endif]--><style>
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:""@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:"Calibri","sans-serif";
mso-bidi-font-family:"Times New Roman";}
.MsoChpDefault
{
mso-bidi-font-family:"Times New Roman";}
/* Page Definitions */
@page
{}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{
mso-style-parent:"";
font-size:10.5pt;
font-family:"Calibri","sans-serif";
mso-bidi-font-family:"Times New Roman";}
</style>
<![endif]-->
<p><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #228820;">Spring </span><span style="font-size: 10pt; font-family: 宋体; color: #228820;">的配置文件就正常配置就可以了。</span></p>
<span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #228820;">ApplicationContext.xml</span><span style="font-size: 10pt; font-family: 宋体; color: #228820;">：</span></p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">beans&nbsp;</span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.springframework.org/schema/beans"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi</span><span style="color: #0000ff;">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #ff0000;">&nbsp;xmlns:aop</span><span style="color: #0000ff;">="http://www.springframework.org/schema/aop"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;xmlns:tx</span><span style="color: #0000ff;">="http://www.springframework.org/schema/tx"</span><span style="color: #ff0000;">&nbsp;xmlns:context</span><span style="color: #0000ff;">="http://www.springframework.org/schema/context"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation</span><span style="color: #0000ff;">="<br />
&nbsp;&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/beans&nbsp;http://www.springframework.org/schema/beans/spring-beans-3.0.xsd<br />
&nbsp;&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/tx&nbsp;http://www.springframework.org/schema/tx/spring-tx-3.0.xsd<br />
&nbsp;&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/aop&nbsp;http://www.springframework.org/schema/aop/spring-aop-3.0.xsd<br />
&nbsp;&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/context&nbsp;http://www.springframework.org/schema/context/spring-context-3.0.xsd"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean&nbsp;id="propertyConfigurer"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name="location"&nbsp;value="WEB-INF/jdbc.properties"&nbsp;/&gt;&nbsp;&lt;/bean&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;hibernate&nbsp;sessionFactory&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">context:annotation-config</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">context:component-scan&nbsp;</span><span style="color: #ff0000;">base-package</span><span style="color: #0000ff;">="cn.xiangyunsoft"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="sessionFactory"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="color: #0000ff;">="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="hibernateProperties"</span><span style="color: #ff0000;">&nbsp;value</span><span style="color: #0000ff;">="classpath:hibernate.properties"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="configLocations"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">list</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;使用hibernate.cfg.xml配置文件&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">classpath:hibernate.cfg.xml<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">value</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">list</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">property</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">bean</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;配置事务管理&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;事务通知类&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;bean&nbsp;id="profiler"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class="cn.xiangyunsoft.business.service.SimpleProfiler"&gt;&nbsp;order<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;值可以决定通知的先后顺序&nbsp;,与后面的order的值的大小，决定了是先通知再执行，还是先执行再通知&nbsp;&lt;property<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name="order"&nbsp;value="2"&nbsp;/&gt;&nbsp;&lt;/bean&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">bean&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="transactionManager"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="color: #0000ff;">="org.springframework.orm.hibernate3.HibernateTransactionManager"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">property&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="sessionFactory"</span><span style="color: #ff0000;">&nbsp;ref</span><span style="color: #0000ff;">="sessionFactory"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">bean</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">aop:config</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;此处的IService&nbsp;是表示对所有实现IService接口的类管理事务&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">aop:advisor<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000;">pointcut</span><span style="color: #0000ff;">="execution(*&nbsp;cn.xiangyunsoft.*.service..*ServiceImpl.*(..))"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;advice-ref</span><span style="color: #0000ff;">="txAdvice"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;加入之后事务不起作用&gt;&nbsp;&lt;aop:aspect&nbsp;id="profilingAspect"&nbsp;ref="profiler"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;aop:pointcut&nbsp;id="serviceMethodWithReturnValue"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;expression="execution(*<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cn.xiangyunsoft.*.service..*ServiceImpl.*(..))"&nbsp;/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;aop:after-throwing&nbsp;method="profile"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pointcut-ref="serviceMethodWithReturnValue"&nbsp;/&gt;&nbsp;&lt;/aop:aspect<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">aop:config</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tx:advice&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="txAdvice"</span><span style="color: #ff0000;">&nbsp;transaction-manager</span><span style="color: #0000ff;">="transactionManager"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;the&nbsp;transactional&nbsp;semantics<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tx:attributes</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;以get、find、load开头的方法是只读事务&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tx:method&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="*"</span><span style="color: #ff0000;">&nbsp;read-only</span><span style="color: #0000ff;">="true"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&lt;tx:method&nbsp;name="find*"&nbsp;read-only="true"&nbsp;/&gt;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&lt;tx:method&nbsp;name="load*"&nbsp;read-only="true"&nbsp;/&gt;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;">&nbsp;其他方法是默认,事务隔离级别为：保证一个事务修改的数据提交后才能被另外一个事务读取&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tx:method&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="save*"</span><span style="color: #ff0000;">&nbsp;isolation</span><span style="color: #0000ff;">="REPEATABLE_READ"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;propagation</span><span style="color: #0000ff;">="REQUIRED"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">tx:method&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="delete*"</span><span style="color: #ff0000;">&nbsp;isolation</span><span style="color: #0000ff;">="REPEATABLE_READ"</span><span style="color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;propagation</span><span style="color: #0000ff;">="REQUIRED"</span><span style="color: #ff0000;">&nbsp;</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tx:attributes</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">tx:advice</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">beans</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span></div>
<p><br />
</p>
<p>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="ProgId" content="Word.Document" />
<meta name="Generator" content="Microsoft Word 12" />
<meta name="Originator" content="Microsoft Word 12" />
<link rel="File-List" href="file:///C:%5CUsers%5Clibo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" /><!--[if gte mso 9]><![endif]-->
<link rel="themeData" href="file:///C:%5CUsers%5Clibo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" />
<link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Clibo%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" /><!--[if gte mso 9]><xml>
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE
</xml><![endif]--><!--[if gte mso 9]><![endif]--><style>
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:""@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:"Calibri","sans-serif";
mso-bidi-font-family:"Times New Roman";}
.MsoChpDefault
{
mso-bidi-font-family:"Times New Roman";}
/* Page Definitions */
@page
{}
@page Section1
{size:612.0pt 792.0pt;
margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
{page:Section1;}
-->
</style><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{
mso-style-parent:"";
font-size:10.5pt;
font-family:"Calibri","sans-serif";
mso-bidi-font-family:"Times New Roman";}
</style>
<![endif]--><span style="font-size: 10pt; font-family: 宋体; color: #0000e1;">一个注入Spring bean 的 </span><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: #0000e1;">JSF bean 代码如下：<br />
</span></p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">@ManagedBean(name&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;ClassItemBean.NAME)<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;ClassItemBean&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;NAME&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">classItemBean</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*在spring&nbsp;中配置的service.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;@ManagedProperty(name&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">classItemService</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;value&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">#{classItemService}</span><span style="color: #000000;">"</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;ClassItemService&nbsp;classItemService;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;setClassItemService(ClassItemService&nbsp;classItemService)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.classItemService&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;classItemService;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;String&nbsp;hello()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">hello.</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;classItemService);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;obj&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;classItemService.get(ClassItem.</span><span style="color: #0000ff;">class</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">01</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000;">"</span><span style="color: #000000;">obj&nbsp;=&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;obj);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
<p><br />
</p>
<p>这样集成就完毕了。很简单，很强大。</p>
<p><br />
</p>
<p><br />
</p>
<p><span style="font-family: 宋体;"><br />
</span></p>
<img src ="http://www.blogjava.net/iamlibo/aggbug/319264.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iamlibo/" target="_blank">Libo</a> 2010-04-24 15:03 <a href="http://www.blogjava.net/iamlibo/archive/2010/04/24/319264.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring 动态数据源</title><link>http://www.blogjava.net/iamlibo/archive/2008/07/20/216231.html</link><dc:creator>Libo</dc:creator><author>Libo</author><pubDate>Sun, 20 Jul 2008 12:49:00 GMT</pubDate><guid>http://www.blogjava.net/iamlibo/archive/2008/07/20/216231.html</guid><wfw:comment>http://www.blogjava.net/iamlibo/comments/216231.html</wfw:comment><comments>http://www.blogjava.net/iamlibo/archive/2008/07/20/216231.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/iamlibo/comments/commentRss/216231.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iamlibo/services/trackbacks/216231.html</trackback:ping><description><![CDATA[
<p>Spring 可以设置动态数据源，这样可以对程序来透明的支持切换操作不同的数据库。</p>
<p><a href="http://oiote.blog.sohu.com/74596942.html">http://oiote.blog.sohu.com/74596942.html</a> 这篇文章写得非常不错。测试通过，并准备在项目中使用这个方法。还有几个问题希望大家给点意见：</p>
<p>首先说一下我的需求：数据库结构都是一样，但具体有多少个数据库不确定（视具体用户而定），用户操作那个数据库要根据登录的时候进行选择，或根据用户的权限而定。这个信息肯定是保存在用户的登录信息中(例如：session）</p>
<p>问题1、当有不同的用户需要操作不同的数据库时（根据登录时的选择或指定），什么时候切换数据库？是在service层还是dao层？这个信息怎么传给层中的方法？如果每个方法都加一个参数这样不太好吧？</p>
<p>问题2、这个频繁的更换数据库，会不会有性能影响？因为sessionFactory是一个切换数据库是不是就是重新初始一次sessionFactory?</p>
<p><br/></p>
<p>附原文如下：</p>
<p>Spring2.0.1以后的版本已经支持配置多数据源，并且可以在运行的时候动态加载不同的数据源。通过继承 AbstractRoutingDataSource就可以实现多数据源的动态转换。目前做的项目就是需要访问12个数据源，每个数据源的表结构都是相同的，所以要求数据源的变动对于编码人员来说是透明，也就是说同样SQL语句在不同的环境下操作的数据库是不一样的。具体的配置如下：<br/>一、首先需要写一个静态的键值对照类：</p>
<br/><p>代码</p>
<br/><p><br/></p>
<ol>
<li><span><span>package</span> <span>cn.com.xinli.ccp.dynamicds;</span></span></li>
<li><span>public</span> <span>class</span> <span>DataSourceMap {</span></li>
<li><span>public</span> <span>static</span> <span>final</span> <span>String Admin=</span><span>"Admin"</span><span>;</span></li>
<li><span>public</span> <span>static</span> <span>final</span> <span>String Yxh =</span> <span>"Yxh"</span><span>;</span></li>
<li><span>}</span></li>
</ol>
<br/><br/><br/><br/><p>这个类主要在使用的时候当作获得数据源的标志使用。<br/>二、建立一个获得和设置上下文的类：<br/></p>
<p>代码</p>
<br/><p><br/></p>
<ol>
<li><span><span>package</span> <span>cn.com.xinli.ccp.dynamicds;</span></span></li>
<li><span>public</span> <span>class</span> <span>CustomerContextHolder {</span></li>
<li><span>private</span> <span>static</span> <span>final</span> <span>ThreadLocal contextHolder =</span></li>
<li><span>new</span> <span>ThreadLocal();</span></li>
<li><span>public</span> <span>static</span> <span>void</span> <span>setCustomerType(String customerType) {</span></li>
<li><span>contextHolder.set(customerType);</span></li>
<li><span>}</span></li>
<li><span>public</span> <span>static</span> <span>String getCustomerType() {</span></li>
<li><span>return</span> <span>(String) contextHolder.get();</span></li>
<li><span>}</span></li>
<li><span>public</span> <span>static</span> <span>void</span> <span>clearCustomerType() {</span></li>
<li><span>contextHolder.remove();</span></li>
<li><span>}</span></li>
<li><span>}</span></li>
</ol>
<br/><br/><p><br/>这个主要负责设置上下文环境和获得上下文环境。<br/>三、建立动态数据源类，这个类必须继承AbstractRoutingDataSource：<br/></p>
<p>代码</p>
<br/><p><br/></p>
<ol>
<li><span><span>package</span> <span>cn.com.xinli.ccp.dynamicds;</span></span></li>
<li><span>import</span> <span>org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;</span></li>
<li><span>public</span> <span>class</span> <span>DynamicDataSource</span> <span>extends</span> <span>AbstractRoutingDataSource {</span></li>
<li><span>protected</span> <span>Object determineCurrentLookupKey() {</span></li>
<li><span>// TODO Auto-generated method stub</span></li>
<li><span>return</span> <span>CustomerContextHolder.getCustomerType();</span></li>
<li><span>}</span></li>
<li><span>}</span></li>
</ol>
<br/><br/><p><br/>这个类实现了 determineCurrentLookupKey方法，该方法返回一个Object，一般是返回字符串，也可以是枚举类型。该方法中直接使用了 CustomerContextHolder.getCustomerType()方法获得上下文环境并直接返回。<br/>四、编写spring的配置文件配置数据源<br/></p>
<p>代码</p>
<br/><p><br/></p>
<ol>
<li><span><span>&lt;</span><span>bean</span> <span>id</span><span>=</span><span>"parentDataSource"</span> </span></li>
<li><span>class</span><span>=</span><span>"org.springframework.jdbc.datasource.DriverManagerDataSource"</span><span>&gt;</span></li>
<li><span>&lt;</span><span>property</span> <span>name</span><span>=</span><span>"driverClassName"</span><span>&gt;</span></li>
<li><span>&lt;</span><span>value</span><span>&gt;</span><span>COM.ibm.db2.jdbc.net.DB2Driver</span><span>&lt;/</span><span>value</span><span>&gt;</span></li>
<li><span>&lt;/</span><span>property</span><span>&gt;</span></li>
<li><span>&lt;</span><span>property</span> <span>name</span><span>=</span><span>"url"</span><span>&gt;</span></li>
<li><span>&lt;</span><span>value</span><span>&gt;</span><span>jdbc:db2:127.0.0.1:TEST</span><span>&lt;/</span><span>value</span><span>&gt;</span></li>
<li><span>&lt;/</span><span>property</span><span>&gt;</span></li>
<li><span>&lt;/</span><span>bean</span><span>&gt;</span></li>
<li><span>&lt;</span><span>bean</span> <span>id</span><span>=</span><span>"adminDataSource"</span> <span>parent</span><span>=</span><span>"parentDataSource"</span><span>&gt;</span></li>
<li><span>&lt;</span><span>property</span> <span>name</span><span>=</span><span>"username"</span> <span>value</span><span>=</span><span>"admin"</span><span>/&gt;</span></li>
<li><span>&lt;</span><span>property</span> <span>name</span><span>=</span><span>"password"</span> <span>value</span><span>=</span><span>"master997mb"</span><span>/&gt;</span></li>
<li><span>&lt;/</span><span>bean</span><span>&gt;</span></li>
<li><span>&lt;</span><span>bean</span> <span>id</span><span>=</span><span>"yxhDataSource"</span> <span>parent</span><span>=</span><span>"parentDataSource"</span><span>&gt;</span></li>
<li><span>&lt;</span><span>property</span> <span>name</span><span>=</span><span>"username"</span> <span>value</span><span>=</span><span>"yxh"</span><span>/&gt;</span></li>
<li><span>&lt;</span><span>property</span> <span>name</span><span>=</span><span>"password"</span> <span>value</span><span>=</span><span>"yxh"</span><span>/&gt;</span></li>
<li><span>&lt;/</span><span>bean</span><span>&gt;</span></li>
</ol>
<br/><br/><p><br/>在这个配置中可以看到首先有个parentDataSource，这个主要配置一些数据源的公用信息，项目中都是链接DB2数据库；adminDataSource和yxhDataSource是根据不同需要配置的个性化信息，但都必须加parent属性，值为 parentDataSource。这样就配置好了2个数据源信息。当然如果链接的多数据源是不同类型的两个数据库，那么 parentDataSource就可以不要了，直接配置两个不同的数据源链接就可以了。<br/>五、编写spring配置文件配置多数据源映射关系<br/></p>
<p>代码</p>
<br/><p><br/></p>
<ol>
<li><span><span>&lt;</span><span>bean</span> <span>id</span><span>=</span><span>"dataSource"</span> <span>class</span><span>=</span><span>"cn.com.xinli.ccp.dynamicds.DynamicDataSource"</span><span>&gt;</span> </span></li>
<li><span>&lt;</span><span>property</span> <span>name</span><span>=</span><span>"targetDataSources"</span><span>&gt;</span></li>
<li><span>&lt;</span><span>map</span> <span>key-type</span><span>=</span><span>"java.lang.String"</span><span>&gt;</span></li>
<li><span>&lt;</span><span>entry</span> <span>key</span><span>=</span><span>"Yxh"</span> <span>value-ref</span><span>=</span><span>"yxhDataSource"</span><span>/&gt;</span></li>
<li><span>&lt;/</span><span>map</span><span>&gt;</span></li>
<li><span>&lt;/</span><span>property</span><span>&gt;</span></li>
<li><span>&lt;</span><span>property</span> <span>name</span><span>=</span><span>"defaultTargetDataSource"</span> <span>ref</span><span>=</span><span>"adminDataSource"</span><span>/&gt;</span></li>
<li><span>&lt;/</span><span>bean</span><span>&gt;</span></li>
</ol>
<br/><br/><p><br/>在这个配置中第一个property属性配置目标数据源，&lt;map key-type="java.lang.String"&gt;中的key-type必须要和静态键值对照类DataSourceMap中的值的类型相同；&lt;entry key="Yxh" value-ref="yxhDataSource"/&gt;中key的值必须要和静态键值对照类中的值相同，如果有多个值，可以配置多个&lt; entry&gt;标签。第二个property属性配置默认的数据源。<br/>六、配置hibernate。<br/>Hibernate的配置和普通的hibernate、spring结合的配置一样<br/></p>
<p>代码</p>
<br/><p><br/></p>
<ol>
<li><span><span>&lt;</span><span>bean</span> <span>id</span><span>=</span><span>"sessionFactory"</span> </span></li>
<li><span>class</span><span>=</span><span>"org.springframework.orm.hibernate3.LocalSessionFactoryBean"</span><span>&gt;</span></li>
<li><span>&lt;!-- to override, use the "SpringDatasourceConfig" snippet in your project --&gt;</span></li>
<li><span>&lt;</span><span>property</span> <span>name</span><span>=</span><span>"dataSource"</span><span>&gt;</span></li>
<li><span>&lt;</span><span>ref</span> <span>local</span><span>=</span><span>"dataSource"</span> <span>/&gt;</span></li>
<li><span>&lt;/</span><span>property</span><span>&gt;</span></li>
<li><span>&lt;</span><span>property</span> <span>name</span><span>=</span><span>"mappingResources"</span><span>&gt;</span></li>
<li><span>&lt;</span><span>list</span><span>&gt;</span></li>
<li><span>&lt;</span><span>value</span><span>&gt;</span></li>
<li><span>cn/com/xinli/ccp/entity/User.hbm.xml</span></li>
<li><span>&lt;/</span><span>value</span><span>&gt;</span></li>
<li><span>&lt;</span><span>value</span><span>&gt;</span></li>
<li><span>cn/com/xinli/ccp/entity/Test.hbm.xml</span></li>
<li><span>&lt;/</span><span>value</span><span>&gt;</span></li>
<li><span>&lt;/</span><span>list</span><span>&gt;</span></li>
<li><span>&lt;/</span><span>property</span><span>&gt;</span></li>
<li><span>&lt;</span><span>property</span> <span>name</span><span>=</span><span>"hibernateProperties"</span><span>&gt;</span></li>
<li><span>&lt;</span><span>props</span><span>&gt;</span></li>
<li><span>&lt;</span><span>prop</span> <span>key</span><span>=</span><span>"hibernate.dialect"</span><span>&gt;</span></li>
<li><span>org.hibernate.dialect.DB2Dialect</span></li>
<li><span>&lt;/</span><span>prop</span><span>&gt;</span></li>
<li><span>&lt;</span><span>prop</span> <span>key</span><span>=</span><span>"hibernate.show_sql"</span><span>&gt;</span><span>true</span><span>&lt;/</span><span>prop</span><span>&gt;</span></li>
<li><span>&lt;</span><span>prop</span> <span>key</span><span>=</span><span>"hibernate.use_outer_join"</span><span>&gt;</span><span>true</span><span>&lt;/</span><span>prop</span><span>&gt;</span></li>
<li><span>&lt;</span><span>prop</span> <span>key</span><span>=</span><span>"hibernate.jdbc.batch_size"</span><span>&gt;</span><span>50</span><span>&lt;/</span><span>prop</span><span>&gt;</span></li>
<li><span>&lt;</span><span>prop</span> <span>key</span><span>=</span><span>"hibernate.jdbc.fetch_size"</span><span>&gt;</span><span>5</span><span>&lt;/</span><span>prop</span><span>&gt;</span></li>
<li><span>&lt;</span><span>prop</span> <span>key</span><span>=</span><span>"hibernate.connection.pool_size"</span><span>&gt;</span><span>2</span><span>&lt;/</span><span>prop</span><span>&gt;</span></li>
<li><span>&lt;</span><span>prop</span> <span>key</span><span>=</span><span>"hibernate.connection.autocommit"</span><span>&gt;</span><span>false</span><span>&lt;/</span><span>prop</span><span>&gt;</span></li>
<li><span>&lt;</span><span>prop</span> <span>key</span><span>=</span><span>"hibernate.cache.use_query_cache"</span><span>&gt;</span><span>false</span><span>&lt;/</span><span>prop</span><span>&gt;</span></li>
<li><span>&lt;</span><span>prop</span> <span>key</span><span>=</span><span>"hibernate.max_fetch_depth"</span><span>&gt;</span><span>1</span><span>&lt;/</span><span>prop</span><span>&gt;</span></li>
<li><span>&lt;</span><span>prop</span> <span>key</span><span>=</span><span>"hibernate.bytecode.use_reflection_optimizer"</span><span>&gt;</span><span>true</span><span>&lt;/</span><span>prop</span><span>&gt;</span></li>
<li><span>&lt;/</span><span>props</span><span>&gt;</span></li>
<li><span>&lt;/</span><span>property</span><span>&gt;</span></li>
<li><span>&lt;/</span><span>bean</span><span>&gt;</span></li>
<li><span>&lt;</span><span>bean</span> <span>id</span><span>=</span><span>"mydao"</span> <span>class</span><span>=</span><span>"cn.com.xinli.ccp.dao.HibernateBaseDao"</span><span>&gt;</span></li>
<li><span>&lt;</span><span>property</span> <span>name</span><span>=</span><span>"sessionFactory"</span><span>&gt;</span></li>
<li><span>&lt;</span><span>ref</span> <span>local</span><span>=</span><span>"sessionFactory"</span> <span>/&gt;</span></li>
<li><span>&lt;/</span><span>property</span><span>&gt;</span></li>
<li><span>&lt;/</span><span>bean</span><span>&gt;</span></li>
</ol>
<br/><br/><p><br/>关于dao的代码这里就省略了。<br/>七、配置结束，可以使用了。<br/></p>
<p>代码</p>
<br/><p><br/></p>
<ol>
<li><span><span>public</span> <span>class</span> <span>DaoTest</span> <span>extends</span> <span>TestCase {</span></span></li>
<li><span>public</span> <span>void</span> <span>testSave()</span> <span>throws</span> <span>Exception{</span></li>
<li><span>CustomerContextHolder.setCustomerType(DataSourceMap.Admin);</span><span>//设置数据源</span></li>
<li><span>//hibernate创建实体</span></li>
<li><span>Test test =</span> <span>new</span> <span>Test();</span></li>
<li><span>test.setTest(</span><span>"22222222"</span><span>);</span></li>
<li><span>mydao.save(test);</span><span>//使用dao保存实体</span></li>
<li><span>CustomerContextHolder.setCustomerType(DataSourceMap.Yxh);</span><span>//设置为另一个数据源</span></li>
<li><span>mydao.save(test);</span><span>//使用dao保存实体到另一个库中</span></li>
<li><span>}</span></li>
<li><span>}</span></li>
</ol>
<br/><br/><p>在项目中对于编码人员对多数据源的切换可以做成透明的，操作同样的dao，就可以访问不同的数据库了。</p>
<p class="zoundry_bw_tags">
  <!-- Tag links generated by Zoundry Blog Writer. Do not manually edit. http://www.zoundry.com -->
  <span class="ztags"><span class="ztagspace">Technorati</span> : <a href="http://technorati.com/tag/spring" class="ztag" rel="tag">spring</a></span> 
</p><img src ="http://www.blogjava.net/iamlibo/aggbug/216231.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iamlibo/" target="_blank">Libo</a> 2008-07-20 20:49 <a href="http://www.blogjava.net/iamlibo/archive/2008/07/20/216231.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从spring配置文件读取bean的方法</title><link>http://www.blogjava.net/iamlibo/archive/2008/07/09/213557.html</link><dc:creator>Libo</dc:creator><author>Libo</author><pubDate>Wed, 09 Jul 2008 03:13:00 GMT</pubDate><guid>http://www.blogjava.net/iamlibo/archive/2008/07/09/213557.html</guid><wfw:comment>http://www.blogjava.net/iamlibo/comments/213557.html</wfw:comment><comments>http://www.blogjava.net/iamlibo/archive/2008/07/09/213557.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/iamlibo/comments/commentRss/213557.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/iamlibo/services/trackbacks/213557.html</trackback:ping><description><![CDATA[<p><span style="font-family: Arial;">转</span></p>
<p><span style="font-family: Arial;"><a href="http://omencathay.itpub.net/post/30163/443031">http://omencathay.itpub.net/post/30163/443031</a></span></p>
<p><span style="font-family: Arial;">/**第一种 */<br />
ApplicationContext ac = new FileSystemXmlApplicationContext("serviceContext.xml");<br />
JurisdictionImp jurisdictionImp = (JurisdictionImp)ac.getBean("jurisdictionImp");<br />
/**第二种*/<br />
FileSystemXmlApplicationContext ctx =new FileSystemXmlApplicationContext(CONTEXT_FILE);<br />
JurisdictionImp jurisdictionImp = (JurisdictionImp) ctx.getBean("jurisdictionImp");<br />
/**第三种*/<br />
Resource resource = new ClassPathResource(CONTEXT_FILE);<br />
XmlBeanFactory beanFactory = new XmlBeanFactory( resource);<br />
JurisdictionImp jurisdictionImp=(JurisdictionImp) beanFactory.getBean("jurisdictionImp");<br />
/**第四种*/<br />
ServletContext context=request.getSession().getServletContext();<br />
ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(context);<br />
JurisdictionImp jurisdictionImp=(JurisdictionImp) ctx.getBean("jurisdictionImp");<br />
/**第五种*/<br />
/**<br />
* 获得其它业务类对象<br />
* */<br />
public Object getBean(String name)<br />
{<br />
WebApplicationContext ctx<br />
if (ctx == null)<br />
{<br />
ctx = WebApplicationContextUtils<br />
.getRequiredWebApplicationContext(servlet.getServletContext());<br />
}<br />
return ctx.getBean(name);<br />
}</span></p>
<img src ="http://www.blogjava.net/iamlibo/aggbug/213557.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/iamlibo/" target="_blank">Libo</a> 2008-07-09 11:13 <a href="http://www.blogjava.net/iamlibo/archive/2008/07/09/213557.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>