首页 > 代码库 > [原创]spring及springmvc精简版--继承数据源,声明式事物
[原创]spring及springmvc精简版--继承数据源,声明式事物
1.前期:导入c3p0 jar包,相关数据库连接jar包,我用的是mysql
2.关注事物管理器的配置和AOP配置
代码: 核心关注bean配置文件
application.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:aop="http://www.springframework.org/schema/aop" 5 xmlns:context="http://www.springframework.org/schema/context" 6 xmlns:tx="http://www.springframework.org/schema/tx" 7 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 8 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 9 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd10 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">11 <!-- 加载属性文件 -->12 <context:property-placeholder location="classpath:db.properties"/>13 14 15 16 17 <!-- 初始化数据源的bean -->18 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">19 <property name="driverClass" value="${driverClassName1}"></property>20 <property name="jdbcUrl" value="${url1}"></property>21 <property name="user" value="${username1}"></property>22 <property name="password" value="${password1}"></property>23 <property name="maxPoolSize" value="${maxActive1}"></property>24 <property name="initialPoolSize" value="${initialSize1}"></property>25 </bean>26 <!-- 配置jdbcTemplate -->27 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">28 <property name="dataSource" ref="dataSource"></property>29 30 </bean>31 32 <bean id="person" class="com.bean.Person"></bean>33 34 <bean id="dao" class="com.dao.Dao">35 <property name="jdbcTemplate" ref="jdbcTemplate"></property>36 </bean>37 <bean id="service" class="com.service.Service">38 <property name="dao" ref="dao"></property>39 </bean>40 41 <!-- 购买商品的bean -->42 <bean id="users" class="com.bean.Users"></bean>43 <bean id="goods" class="com.bean.Goods"></bean>44 <bean id="usersDao" class="com.dao.UsersDao">45 <property name="jdbcTemplate" ref="jdbcTemplate"></property>46 </bean>47 <bean id="goodsDao" class="com.dao.GoodsDao">48 <property name="jdbcTemplate" ref="jdbcTemplate"></property>49 </bean>50 <bean id="buyService" class="com.service.BuyService">51 <property name="goodsDao" ref="goodsDao"></property>52 <property name="usersDao" ref="usersDao"></property>53 </bean>54 <bean id="buyMarthService" class="com.service.BuyMarthService">55 <property name="buyService" ref="buyService"></property>56 </bean>57 58 59 <!-- 配置事务管理器 -->60 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">61 <property name="dataSource" ref="dataSource"></property>62 </bean>63 <!-- 配置事务属性 -->64 <tx:advice id="txa" transaction-manager="transactionManager">65 <tx:attributes>66 <tx:method name="buyOneGoods" propagation="REQUIRES_NEW"/>67 <tx:method name="*"/>68 </tx:attributes>69 </tx:advice>70 <!-- 配置事务aop71 72 -->73 74 <aop:config>75 <aop:pointcut expression="execution(* com.service.*.*(..))" id="pc"/>76 <aop:advisor advice-ref="txa" pointcut-ref="pc"/>77 </aop:config>78 </beans>
db.properties
1 driverClassName1 = com.mysql.jdbc.Driver2 url1 = jdbc:mysql://localhost:3306/test3 username1 = root4 password1 = mysql5 maxActive1 = 506 initialSize1 =20
com.bean
Users
1 package com.bean; 2 3 public class Goods { 4 5 private int gid; 6 private int gprice; 7 private int gnum; 8 public int getGid() { 9 return gid;10 }11 public void setGid(int gid) {12 this.gid = gid;13 }14 public int getGprice() {15 return gprice;16 }17 public void setGprice(int gprice) {18 this.gprice = gprice;19 }20 public int getGnum() {21 return gnum;22 }23 public void setGnum(int gnum) {24 this.gnum = gnum;25 }26 27 }
Person
1 package com.bean; 2 3 public class Person { 4 5 private String name; 6 private int age; 7 public String getName() { 8 return name; 9 }10 public void setName(String name) {11 this.name = name;12 }13 public int getAge() {14 return age;15 }16 public void setAge(int age) {17 this.age = age;18 }19 20 }
User
1 package com.bean; 2 3 public class Users { 4 5 private int uid ; 6 private String uname; 7 private int umoney; 8 public int getUid() { 9 return uid;10 }11 public void setUid(int uid) {12 this.uid = uid;13 }14 public String getUname() {15 return uname;16 }17 public void setUname(String uname) {18 this.uname = uname;19 }20 public int getUmoney() {21 return umoney;22 }23 public void setUmoney(int umoney) {24 this.umoney = umoney;25 }26 27 }
DAO
DAO
1 package com.dao; 2 import org.springframework.jdbc.core.JdbcTemplate; 3 4 import com.bean.Person; 5 6 7 public class Dao { 8 9 private JdbcTemplate jdbcTemplate;10 public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {11 this.jdbcTemplate = jdbcTemplate;12 }13 14 public int update(Person p){15 int num = jdbcTemplate.update("update person set name=? where age=?", p.getName(),p.getAge());16 return num;17 }18 }
GoodsDao
1 package com.dao; 2 3 import org.springframework.jdbc.core.JdbcTemplate; 4 5 public class GoodsDao { 6 7 private JdbcTemplate jdbcTemplate; 8 9 public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {10 this.jdbcTemplate = jdbcTemplate;11 }12 13 public int getGpriceByGid(int gid){14 int gprice = jdbcTemplate.queryForObject("select gprice from goods where gid=?", Integer.class, gid);15 return gprice;16 }17 18 public int getGnumByGid(int gid){19 int gnum = jdbcTemplate.queryForObject("select gnum from goods where gid=?", Integer.class, gid);20 return gnum;21 }22 23 public void updateGnum(int gid,int num){24 jdbcTemplate.update("update goods set gnum=gnum-? where gid=?", num,gid);25 }26 }
UserDao
package com.dao;import org.springframework.jdbc.core.JdbcTemplate;public class UsersDao { private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public int getMoneyByUid(int uid){ int umoney = jdbcTemplate.queryForObject("select umoney from users where uid=?", Integer.class, uid); return umoney; } public void updateUmoney(int uid,int price){ jdbcTemplate.update("update users set umoney=umoney-? where uid=?", price,uid); }}
Service
1 package com.service; 2 3 public class BuyMarthService { 4 5 private BuyService buyService; 6 public void setBuyService(BuyService buyService) { 7 this.buyService = buyService; 8 } 9 10 public void buygoodsList(int uid,int[] gids,int[] nums){11 for(int i = 0;i<gids.length;i++){12 buyService.buyOneGoods(uid, gids[i], nums[i]);13 }14 15 }16 }
1 package com.service; 2 3 import com.dao.GoodsDao; 4 import com.dao.UsersDao; 5 6 public class BuyService { 7 8 private UsersDao usersDao; 9 private GoodsDao goodsDao;10 public void setGoodsDao(GoodsDao goodsDao) {11 this.goodsDao = goodsDao;12 }13 public void setUsersDao(UsersDao usersDao) {14 this.usersDao = usersDao;15 }16 17 public void buyOneGoods(int uid,int gid,int num){18 /*19 * 1-获取商品的库存20 * 2-验证库存是否足够21 * 1-不足:抛出异常 (回滚)22 * 2-足:修改商品的库存23 * 3-修改余额等同224 */25 int gnum = goodsDao.getGnumByGid(gid);26 if(gnum <= num){27 throw new RuntimeException("商品库存不足");28 }29 goodsDao.updateGnum(gid, num);30 int gprice = goodsDao.getGpriceByGid(gid);31 int umoney = usersDao.getMoneyByUid(uid);32 if(umoney < gprice*num){33 throw new RuntimeException("用户余额不足");34 }35 usersDao.updateUmoney(uid, gprice*num);36 }37 38 }
1 package com.service; 2 3 import com.bean.Person; 4 import com.dao.Dao; 5 6 public class Service { 7 8 private Dao dao; 9 public void setDao(Dao dao) {10 this.dao = dao;11 }12 public void updatePerson(Person p){13 dao.update(p);14 }15 }
[原创]spring及springmvc精简版--继承数据源,声明式事物
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。