17年2月27日Java后台学习记录,SSM架构最终配置,Spring回滚机制。
来源:互联网 发布:初中校园网络文化活动 编辑:程序博客网 时间:2024/06/05 06:06
N:
1.之前Spring 托管 Mybatis时将配置写在同一个xml中,现在分成三部分dao service spring-mvc
spring-dao中 主要配置连接池、mybatis sqlSessionFactory、dao 包的位置:
<?xml version="1.0" encoding="UTF-8"?><beans ...> <!-- 引入配置文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties" /> </bean> <!--数据库连接池--> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> ... </bean> <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!--配置mybatis全局配置文件:mybatis-config.xml--> <property name="configLocation" value="classpath:mybatis-config.xml"/> <!--扫描entity包,使用别名,多个用;隔开--> <property name="typeAliasesPackage" value="org.seckill.entity"/> <!--扫描sql配置文件:mapper需要的xml文件--> <property name="mapperLocations" value="classpath:mapper/*.xml"/> </bean> <!-- DAO接口所在包名,Spring会自动查找其下的类 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="org.seckill.dao" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> </bean></beans>
spring-service中配置service,component-scan扫描service包的位置,配置事务:
<?xml version="1.0" encoding="UTF-8"?><beans ...> <context:component-scan base-package="org.seckill.service"/> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!--注入数据库的连接池--> <property name="dataSource" ref="dataSource" /> </bean> <tx:annotation-driven transaction-manager="transactionManager"/></beans>
spring-mvc中则是配置controller以及相关设置:
<?xml version="1.0" encoding="UTF-8"?><beans ...> <!--1.开启SpringMvc的注解模式 2.提供一系列的支持,支持日期format xml json的默认支持--> <mvc:annotation-driven/> <!--静态资源配置 1.加入静态资源的处理 2.允许使用/做整体映射--> <mvc:default-servlet-handler /> <context:component-scan base-package="org.seckill.controller"/> <!-- 定义跳转的文件的前后缀 ,视图模式配置--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean></beans>
web.xml中之前是单独写一个content scan,servlet中单独配置 spring-mvc
现在则改为所有的 spring-*.xml都放在servlet中:
<?xml version="1.0" encoding="UTF-8"?><web-app ...> <display-name>Archetype Created Web Application</display-name> <!-- Spring MVC servlet --> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/spring-*.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <!-- 此处可以可以配置成*.do,对应struts的后缀习惯 --> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list></web-app>
2.log4f使用:Logger logger = LoggerFactory.getLogger(this.getClass());
同时必须有配置文件,默认在resources中,logback.xml或者 logback-test.xml 配置官方说明
N:异常回滚问题
在spring-service中
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!--注入数据库的连接池--> <property name="dataSource" ref="dataSource" /> </bean> <tx:annotation-driven transaction-manager="transactionManager"/>
开启注释事务机制,在service的实现类中需要回滚的方法上添加@Transactional
需要注意的是spring只有捕捉到runtime异常才能回滚这就有两个问题:
(1)要使用回滚机制,第一种方式不能添加try-catch,直接throw抛出,第二种方式是在try-catch中再次将异常抛出:
throw new SeckillException("seckill data(md5) rewrite "); 或者catch (RepeatKillException e2) { throw e2; }
(2)第二个问题就是非runtime问题,如数据库断开连接,这些异常必须转化为runtime异常:
catch (Exception e) { logger.error(e.getMessage(), e); /**所有编译期异常(insert超时,数据库连接错误)转化为运行期异常 * 有错误就回滚*/ throw new SeckillException("seckill inner error", e); }
N:1.AJAX app等需要json,添加一个dto层,存放Json映射对象
2.controller中调用service,进行异常处理。因为出现异常后,程序直接停止运行,因此需要try-catch同时云云这些异常
- 17年2月27日Java后台学习记录,SSM架构最终配置,Spring回滚机制。
- 17年2月24日Java后台学习记录,Spring Maven更换版本报错,SSM框架整合,Mysql语句整理。
- 17年2月26日Java后台学习记录,Mysql 多个timestamp,xml中使用小于号,Mybatisdao接口多个参数函数错误
- 2月27日学习记录
- 【黑马程序员】2013年11月27日学习记录
- 2012年3月15-17日学习记录
- VxWoks学习记录(2014年4月17日)
- 8月27日学习记录
- 2012年4月1-2日学习记录
- 学习记录 2017年2月3日
- Spring 事务回滚机制
- 17年3月2日,记录我学习中遇见的问题
- 《一站式学习C编程》学习记录 11月27日
- SPRING配置事务回滚
- Java学习记录之SSM
- JAVA学习笔记(2013年03月17日)
- java之Spring事务回滚和Ehcache配置
- 2012年3月7日学习记录
- IE9 cookie删除不了怎么办
- Yii的事件机制
- AutoMapper使用
- shell 重启tomcat 脚本
- CSS布局浮动和溢出控制及定位及显示类型
- 17年2月27日Java后台学习记录,SSM架构最终配置,Spring回滚机制。
- C++第一次上机训练项目三
- Wireshark实战分析值ICMP协议
- Java RMI简单使用案例
- 学会正则表达式让你的编程如虎添翼
- Jquery——Day5(jQuery UI:知乎系统[初级])
- redis.conf常用配置
- 容器的capacity、max_size以及内存分配
- 谈HttpClient(3.1版本)与HttpURLConnection