﻿<?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-hyljava-随笔分类-Spring</title><link>http://www.blogjava.net/hyljava/category/53333.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 23 Nov 2013 23:12:07 GMT</lastBuildDate><pubDate>Sat, 23 Nov 2013 23:12:07 GMT</pubDate><ttl>60</ttl><item><title>四海兴唐课程辅导平台</title><link>http://www.blogjava.net/hyljava/archive/2013/11/23/406728.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Sat, 23 Nov 2013 12:52:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2013/11/23/406728.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/406728.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2013/11/23/406728.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/406728.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/406728.html</trackback:ping><description><![CDATA[<div>四海兴唐课程辅导平台<br /><a href="http://fd.itedu-g.cn/login.php">http://fd.itedu-g.cn/login.php</a></div><img src ="http://www.blogjava.net/hyljava/aggbug/406728.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2013-11-23 20:52 <a href="http://www.blogjava.net/hyljava/archive/2013/11/23/406728.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring MVC使用动态代理实现事务控制</title><link>http://www.blogjava.net/hyljava/archive/2013/04/19/398073.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Fri, 19 Apr 2013 02:56:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2013/04/19/398073.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/398073.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2013/04/19/398073.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/398073.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/398073.html</trackback:ping><description><![CDATA[<div><div><div style="text-align: center; ">Spring MVC使用动态代理实现事务控制</div>applicationContext.xml文件中配置</div><br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;</div><div>&lt;beans xmlns="http://www.springframework.org/schema/beans"</div><div><span style="white-space:pre">	</span>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"</div><div><span style="white-space:pre">	</span>xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"</div><div><span style="white-space:pre">	</span>xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa"</div><div><span style="white-space:pre">	</span>xsi:schemaLocation="</div><div><span style="white-space:pre">		</span>http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd</div><div><span style="white-space:pre">		</span>http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd</div><div><span style="white-space:pre">		</span>http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd</div><div><span style="white-space:pre">		</span>http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd</div><div><span style="white-space:pre">		</span>http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd</div><div><span style="white-space:pre">		</span>http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd"</div><div><span style="white-space:pre">	</span>default-lazy-init="true"&gt;</div><div><span style="white-space:pre">	</span>&lt;!--</div><div><span style="white-space:pre">		</span>spring在启动的时候，会默认加载会默认加载整个对象实例图，从初始化ACTION配置、到</div><div><span style="white-space:pre">		</span>service配置到dao配置、乃至到数据库连接、事务等等。这样可以减少web服务器在运行时的负担，但是对于开发者来说无疑是效率极低的一个设置了。</div><div></div><div><span style="white-space:pre">		</span>还好，spring提供了default-lazy-init属性，其配置形式如下，applicationContext.xml中： &lt;</div><div><span style="white-space:pre">		</span>beans default-lazy-init ="true" &gt; &lt; bean class ="org.xxxx.bean" &gt;</div><div></div><div><span style="white-space:pre">		</span>。。。。。。 &lt;/beans&gt;</div><div></div><div><span style="white-space:pre">		</span>spring配置默认default-lazy-init为false，当配置为true时sping不会再去加载整个对象实例图，大大减少了初始化的时间，减少了spring的启动速度。</div><div></div><div><span style="white-space:pre">		</span>这样做只是为了在开发过程中节约启动时间，在部署到实际环境中，倒是没必要设置default-lazy-init为true。毕竟部署到实际环境中不是经常的事，每次启动1分钟倒不是大问题，而且可以提高服务器效率。</div><div></div><div><span style="white-space:pre">		</span>当然，也不是所有的beans都能设置default-lazy-init成为true.对于scheduler的bean不能用lazy-init</div><div></div><div><span style="white-space:pre">		</span>&lt; beans default-lazy-init ="true" &gt; &lt; bean class</div><div><span style="white-space:pre">		</span>="org.springframework.scheduling.quartz.SchedulerFactoryBean" &gt; &lt;</div><div><span style="white-space:pre">		</span>property name ="triggers" &gt; &lt; list &gt; &lt; ref bean ="buildHtmlTrigger" /&gt;</div><div><span style="white-space:pre">		</span>&lt; ref bean ="askTrigger" /&gt; &lt; ref bean ="mailSenderTrigger" /&gt; &lt; ref</div><div><span style="white-space:pre">		</span>bean ="topicDetailBuildTrigger" /&gt; &lt; ref bean ="forumBuildTrigger" /&gt;</div><div><span style="white-space:pre">		</span>&lt; ref bean ="topicBuildTrigger" /&gt; &lt;/ list &gt; &lt;/ property &gt; &lt;/ bean &gt;</div><div><span style="white-space:pre">		</span>&lt;/ beans &gt; 这样的话。所有的scheduler就都不管用了。所以请大家要注意。</div><div><span style="white-space:pre">	</span>--&gt;</div><div>&nbsp;</div><div></div><div><span style="white-space:pre">	</span>&lt;!-- 使用annotation 自动注册bean, 并保证@Required、@Autowired的属性被注入 --&gt;</div><div><span style="white-space:pre">	</span>&lt;context:component-scan base-package="com.edufe"&gt;</div><div><span style="white-space:pre">		</span>&lt;context:exclude-filter type="annotation"</div><div><span style="white-space:pre">			</span>expression="org.springframework.stereotype.Controller" /&gt;</div><div><span style="white-space:pre">	</span>&lt;/context:component-scan&gt;</div><div></div><div></div><div><span style="white-space:pre">	</span>&lt;context:property-placeholder</div><div><span style="white-space:pre">		</span>ignore-resource-not-found="true"</div><div><span style="white-space:pre">		</span>location="classpath*:/application.properties,</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="white-space:pre">			</span> &nbsp;classpath*:/application.development.properties" /&gt;</div><div></div><div><span style="white-space:pre">	</span>&lt;!-- 创建数据源 --&gt;</div><div><span style="white-space:pre">	</span>&lt;bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"</div><div><span style="white-space:pre">		</span>destroy-method="close"&gt;</div><div><span style="white-space:pre">		</span>&lt;property name="driverClassName" value="${jdbc.driver}" /&gt;</div><div><span style="white-space:pre">		</span>&lt;property name="url" value="${jdbc.url}" /&gt;</div><div><span style="white-space:pre">		</span>&lt;property name="username" value="${jdbc.username}" /&gt;</div><div><span style="white-space:pre">		</span>&lt;property name="password" value="${jdbc.password}" /&gt;</div><div><span style="white-space:pre">	</span>&lt;/bean&gt;</div><div></div><div><span style="white-space:pre">	</span>&lt;!-- 使用嵌入式数据库H2 --&gt;</div><div><span style="white-space:pre">	</span>&lt;!--</div><div><span style="white-space:pre">		</span>&lt;jdbc:embedded-database id="dataSource" type="H2"&gt; &lt;jdbc:script</div><div><span style="white-space:pre">		</span>location="classpath:sql/h2/schema.sql" /&gt; &lt;jdbc:script</div><div><span style="white-space:pre">		</span>location="classpath:sql/h2/import-data.sql" /&gt;</div><div><span style="white-space:pre">		</span>&lt;/jdbc:embedded-database&gt;</div><div><span style="white-space:pre">	</span>--&gt;</div><div></div><div><span style="white-space:pre">	</span>&lt;!-- 创建jdbcTemplate对象 --&gt;</div><div><span style="white-space:pre">	</span>&lt;bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"&gt;</div><div><span style="white-space:pre">		</span>&lt;property name="dataSource" ref="dataSource" /&gt;</div><div><span style="white-space:pre">	</span>&lt;/bean&gt;</div><div></div><div></div><div></div><div><span style="white-space:pre">	</span>&lt;!-- 在容器文件中配置bean（service，dao，domain，action，数据源）， --&gt;</div><div><span style="white-space:pre">	</span>&lt;!--</div><div><span style="white-space:pre">		</span>bean的作用是， 当我们spring框架加载的时候，spring就会自动创建一个bean，并放入内存 即产生UserService</div><div><span style="white-space:pre">		</span>user=new UserService(); user.setName("张三");</div><div><span style="white-space:pre">	</span>--&gt;</div><div><span style="white-space:pre">	</span>&lt;!--</div><div><span style="white-space:pre">		</span>&lt;bean id="userService" class=""&gt; 这里就体现出了注入的概念 &lt;property name="name"&gt;</div><div><span style="white-space:pre">		</span>&lt;value&gt;张三&lt;/value&gt; &lt;/property&gt; 在UserService中引用ByeService的对象ref是个引用</div><div><span style="white-space:pre">		</span>&lt;property name="byeS" ref="byeService" /&gt; &lt;/bean&gt;</div><div><span style="white-space:pre">	</span>--&gt;</div><div>&nbsp;</div><div>&nbsp;</div><div><span style="white-space:pre">	</span>&lt;!-- 处理事务 --&gt;</div><div><span style="white-space:pre">	</span>&lt;!-- 生成一个事务管理对象 --&gt;</div><div><span style="white-space:pre">	</span>&lt;bean id="transactionManager"</div><div><span style="white-space:pre">		</span>class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&gt;</div><div><span style="white-space:pre">		</span>&lt;constructor-arg index="0" ref="dataSource"&gt;</div><div><span style="white-space:pre">		</span>&lt;/constructor-arg&gt;</div><div><span style="white-space:pre">	</span>&lt;/bean&gt;</div><div><span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>&lt;!-- 生成默认事务定义对象 --&gt;</div><div><span style="white-space:pre">	</span>&lt;bean id="def" class="org.springframework.transaction.support.DefaultTransactionDefinition"&gt;&lt;/bean&gt;</div><div>&nbsp;</div><div></div><div></div><div>&lt;/beans&gt;<br /><br />在dao中<br /><div><span style="white-space:pre">	</span>@Autowired</div><div><span style="white-space:pre">	</span>private DataSourceTransactionManager transactionManager;</div><div><span style="white-space:pre">	</span>@Autowired</div><div><span style="white-space:pre">	</span>private DefaultTransactionDefinition def;<br /><div>public int excuteTrac() {</div><div><span style="white-space:pre">		</span>int temp = 0;</div><div></div><div><span style="white-space:pre">		</span>// 批插入</div><div><span style="white-space:pre">		</span>String sql1[] = new String[4];</div><div><span style="white-space:pre">		</span>// 向第一个表插入的语句</div><div><span style="white-space:pre">		</span>sql1[0] = "insert into usermbo( ID, USERNAME, age) values('122','22','22')";</div><div><span style="white-space:pre">		</span>sql1[1] = "insert into usermbo( ID, USERNAME, age) values('133','33','33')";</div><div><span style="white-space:pre">		</span>sql1[2] = "insert into usermbo( ID, USERNAME, age) values('144','44','33')";</div><div><span style="white-space:pre">		</span>sql1[3] = "insert into usermbo( ID, USERNAME, age) values('155','55','33')";</div><div></div><div><span style="white-space:pre">		</span>String[] sql2 = new String[3];</div><div><span style="white-space:pre">		</span>// 向第二个表插入的语句</div><div><span style="white-space:pre">		</span>sql2[0] = "insert into address (NO, NAME) values('33','33')";</div><div><span style="white-space:pre">		</span>// 此条数据是错误数据 插入会出现异常</div><div><span style="white-space:pre">		</span>sql2[1] = "insert into address (NO, NAME) &nbsp;values('eee','44')";</div><div><span style="white-space:pre">		</span>sql2[2] = "insert into address (NO, NAME) &nbsp;values('144','44')";</div><div>&nbsp;</div><div><span style="white-space:pre">		</span>TransactionStatus status = transactionManager.getTransaction(def);</div><div></div><div><span style="white-space:pre">		</span>try {</div><div><span style="white-space:pre">			</span>int[] a = jdbcTemplate.batchUpdate(sql1);</div><div><span style="white-space:pre">			</span>int[] b = jdbcTemplate.batchUpdate(sql2);</div><div><span style="white-space:pre">			</span>try {</div><div><span style="white-space:pre">				</span>transactionManager.commit(status);</div><div><span style="white-space:pre">			</span>} catch (Exception e) {</div><div><span style="white-space:pre">				</span> System.out.println("事务提交异常");</div><div><span style="white-space:pre">			</span>}</div><div></div><div><span style="white-space:pre">		</span>} catch (Exception ex) {</div><div><span style="white-space:pre">			</span> System.out.println("出现事务异常");</div><div><span style="white-space:pre">			</span>try {</div><div><span style="white-space:pre">				</span>transactionManager.rollback(status);</div><div><span style="white-space:pre">			</span>} catch (IllegalTransactionStateException e) {</div><div></div><div><span style="white-space:pre">				</span> System.out.println("回滚数据异常");</div><div><span style="white-space:pre">			</span>}</div><div><span style="white-space:pre">			</span>temp = -1;</div><div><span style="white-space:pre">		</span>}</div><div><span style="white-space:pre">		</span>return temp;</div><div><span style="white-space:pre">	</span>}</div></div></div><img src ="http://www.blogjava.net/hyljava/aggbug/398073.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2013-04-19 10:56 <a href="http://www.blogjava.net/hyljava/archive/2013/04/19/398073.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JdbcTemplate使用事务控制批处理</title><link>http://www.blogjava.net/hyljava/archive/2013/04/18/398028.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Thu, 18 Apr 2013 07:12:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2013/04/18/398028.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/398028.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2013/04/18/398028.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/398028.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/398028.html</trackback:ping><description><![CDATA[<div><div>JdbcTemplate使用事务控制批处理</div><br />//在dao中写的一个方法<br />public int excuteTrac() {</div><div><span style="white-space:pre">		</span>int temp = 0;</div><div></div><div><span style="white-space:pre">		</span>// &nbsp;批插入&nbsp;</div><div><span style="white-space:pre">		</span>String sql1[] = new String[4];</div><div><span style="white-space:pre">			</span>//向第一个表插入的语句</div><div><span style="white-space:pre">		</span>sql1[0] = "insert into usermbo(USERNAME,age,PASSWORD) values(' 23 &nbsp;','3','45')";</div><div><span style="white-space:pre">		</span>sql1[1] = "insert into usermbo(USERNAME,age,PASSWORD) values('22 &nbsp;','22','22')";</div><div><span style="white-space:pre">		</span>sql1[2] = "insert into usermbo(USERNAME,age,PASSWORD) values(' 44 &nbsp;','44','4')";</div><div><span style="white-space:pre">		</span>sql1[3] = "insert into usermbo(USERNAME,age,PASSWORD) values(' 55 &nbsp;','55','55')";</div><div></div><div><span style="white-space:pre">		</span>String[] sql2 = new String[3];</div><div><span style="white-space:pre">		</span>//向第二个表插入的语句</div><div><span style="white-space:pre">		</span>sql2[0] = "insert into address(NO,NAME) values('21','33')";</div><div><span style="white-space:pre">		</span>// 此条数据是错误数据 插入会出现异常</div><div><span style="white-space:pre">		</span>sql2[1] = "insert into address(NO,NAME) values('ee','44')";</div><div><span style="white-space:pre">		</span>sql2[2] = "insert into address(NO,NAME) values('44','44')";</div><div><span style="white-space:pre">		</span></div><div><span style="white-space:pre">		</span>DefaultTransactionDefinition def = new DefaultTransactionDefinition();</div><div><span style="white-space:pre">		</span>DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(</div><div><span style="white-space:pre">				</span>jdbcTemplate.getDataSource());</div><div><span style="white-space:pre">		</span>TransactionStatus status = transactionManager.getTransaction(def);</div><div></div><div><span style="white-space:pre">		</span>try {</div><div><span style="white-space:pre">			</span>int[] a = jdbcTemplate.batchUpdate(sql1);</div><div><span style="white-space:pre">			</span>int[] b = jdbcTemplate.batchUpdate(sql2);</div><div><span style="white-space:pre">			</span>for (int x : a) {</div><div><span style="white-space:pre">				</span>System.out.println(x);</div><div><span style="white-space:pre">			</span>}</div><div><span style="white-space:pre">			</span>for (int x : b) {</div><div><span style="white-space:pre">				</span>System.out.println(x);</div><div><span style="white-space:pre">			</span>}</div><div><span style="white-space:pre">		</span>} catch (Exception ex) {</div><div><span style="white-space:pre">			</span>System.out.println("出现事务异常");</div><div><span style="white-space:pre">			</span>// transactionManager.rollback(status);</div><div><span style="white-space:pre">			</span>temp = -1;</div><div><span style="white-space:pre">		</span>} finally {</div><div><span style="white-space:pre">			</span>transactionManager.commit(status);</div><div><span style="white-space:pre">		</span>}</div><div><span style="white-space:pre">		</span>return temp;</div><div><span style="white-space:pre">	</span>}</div><div></div><img src ="http://www.blogjava.net/hyljava/aggbug/398028.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2013-04-18 15:12 <a href="http://www.blogjava.net/hyljava/archive/2013/04/18/398028.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>