Spring_SSJ集成
文章目录
- 1 三大框架
- 1.1 ssh
- 1.2 ssm(最流行的框架)
- 1.3 ssj(Spring springMvc jpa)
- 2 Spring集成JPA
- 2.1 加载jdbc.properties
- 2.2 配置ApplicationContext.xml
- 2.3 spring事物传播机制
- 2.3.1 事物配置
- 3 SpringMVC和spring集成或者整合
- 3.1 配置web.xml
- 3.2 配置ApplicationContext-mvc.xml
- 3.3 修改web.xml,解决延迟加载的异常
1 三大框架
1.1 ssh
struts
spring
hibernate
(struts2 Spring Hibernate)
1.2 ssm(最流行的框架)
SpringMVC
Spring
MyBatis
1.3 ssj(Spring springMvc jpa)
Struts2 Spring JPA
SpringMVC Spring JPA
SpringMVC Spring spring Data JPA(spring的全家桶)
2 Spring集成JPA
<dependencies>
<!-- spring和springmvc整合包-->
<dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>4.2.5.RELEASE</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.2.5.RELEASE</version>
</dependency>
<!-- springjdbc的包-->
<dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.2.5.RELEASE</version>
</dependency>
<!-- Spring和ORM(JPA)整合的包-->
<dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>4.2.5.RELEASE</version>
</dependency>
<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>4.3.8.Final</version>
</dependency>
<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>4.3.8.Final</version>
</dependency>
<!-- mysql数据库-->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version>
</dependency>
<!-- 连接池-->
<dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.2.2</version>
</dependency>
<!-- Spring测试-->
<dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>4.2.5.RELEASE</version>
</dependency>
<!-- Springaop-->
<dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.9</version>
</dependency>
<!-- 处理json的包-->
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.6.5</version>
</dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope>
</dependency>
</dependencies>
2.1 加载jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///ssj
jdbc.username=root
jdbc.password=root
2.2 配置ApplicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd"><!--开启注解扫描--><context:component-scan base-package="cn.itsource" /><!-- 加载jdbc.properties --><context:property-placeholder location="classpath:jdbc.properties" /><!-- 配置连接池dataSource --><!-- destroy-method="close当前bean销毁的时候,会先调用close方法,关闭连接" --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"><!-- 依赖注入连接池需要的属性 --><!-- property name="是BasicDataSource的set方法,本质属性" --><!-- property value="是jdbc.properties配置文件的key" --><property name="driverClassName" value="${jdbc.driverClassName}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /></bean><!--得到EntityManagerFactory--><bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"><!--配置属性--><property name="dataSource" ref="dataSource" /><!--扫描实体类--><property name="packagesToScan" value="cn.itsource.domain" /><property name="jpaVendorAdapter"><bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"><!--是否显示sql--><property name="showSql" value="true" /><!--是否创建表--><property name="generateDdl" value="true" /><!--数据库方言--><property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect" /></bean></property></bean><!--事物管理器--><bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"><property name="entityManagerFactory" ref="entityManagerFactory" /></bean><!--开启事物 扫描@Transaction这种注解--><tx:annotation-driven /></beans>
2.3 spring事物传播机制
事物的传播机制 Propagation
Propagation.REQUIRED
表示当前方法必须运行在事物中
Propagation.SUPPORTS
表示当前不需要事物,如果存在当前事物 那么就在这个事物中运行
Propagation.MANDATORY
表示该方法必须在事务中运行,如果当前事务不存在,则会抛出一个异常
Propagation.REQUIRES_NEW
表示当前方法必须运行在它自己的事务中。一个新的事务将被启动。如果存在当前事务,在该方法执行期间,
当前事务会被挂起。如果使用JTATransactionManager的话,则需要访问TransactionManager
Propagation.NOT_SUPPORTED
表示该方法不应该运行在事务中。如果存在当前事务,在该方法运行期间,当前事务将被挂起。
如果使用JTATransactionManager的话,则需要访问TransactionManager
Propagation.NEVER
表示当前方法不应该运行在事务上下文中。如果当前正有一个事务在运行,则会抛出异常
Propagation.NESTED
表示如果当前已经存在一个事务,那么该方法将会在嵌套事务中运行。嵌套的事务可以独立于当前事务进行单独地提交或回滚。
如果当前事务不存在,那么其行为与PROPAGATION_REQUIRED一样。注意各厂商对这种传播行为的支持是有所差异的。
2.3.1 事物配置
readOnly = true
只读
@Transactional(propagation = Propagation.SUPPORTS,readOnly = true)
public class ProductServiceImpl implements IProductService
如果自身的方法配置传播机制 方法上面就采用自己配置注解
@Transactional(propagation = Propagation.REQUIRED)
public void save(Product product) {productDao.save(product);
}
3 SpringMVC和spring集成或者整合
3.1 配置web.xml
导入jar --spring-web /spring-webmvc
- 配置springmvc配置文件
- 配置前缀 后缀 (视图解析器)
- 静态资源放行
- 上传解析器
- 扫描@RequestMapping注解
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><!--处理懒加载关闭问题--><filter><filter-name>OpenEntityManagerInViewFilter</filter-name><filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class></filter><filter-mapping><filter-name>OpenEntityManagerInViewFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--监听器读取配置--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:ApplicationContext.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!--字符编码过滤器--><filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--核心控制器--><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:ApplicationContext-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>
3.2 配置ApplicationContext-mvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsd"><context:component-scan base-package="cn.itsource.web.controller" /><!--静态资源放行--><mvc:default-servlet-handler /><!--扫描--><mvc:annotation-driven /><!--视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/" /><property name="suffix" value=".jsp" /></bean>
</beans>
3.3 修改web.xml,解决延迟加载的异常
<!-- 添加关闭entityManger过滤器,必须在struts2过滤器之前 -->
<filter><filter-name>OpenEntityManagerInViewFilter</filter-name><filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter><filter-mapping><filter-name>OpenEntityManagerInViewFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>
在Product类里面配置
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="dir_id")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
private ProductDir productDir;
Spring_SSJ集成相关推荐
- Nignx集成fastDFS后访问Nginx一直在加载中解决
问题描述: Nginx集成fastDFS后,访问Nginx一直在加载中,得不到页面.查看Nginx的错误日志: 可以看到是fastdfs.conf的配置错误,tracker的ip没有修改: fastd ...
- Hexo集成Algolia实现搜索功能
2年前搭建的hexo博客好久没有维护了,一看 hexo 以及先前使用 butterfly 主题已经更新好几个版本了,看介绍在速度性能上有了很大的提高,于是打算给 hexo 升个级,整理整理翻翻新.通过 ...
- 将TVM集成到PyTorch
将TVM集成到PyTorch 随着TVM不断展示出对深度学习执行效率的改进,很明显PyTorch将从直接利用编译器堆栈中受益.PyTorch的主要宗旨是提供无缝且强大的集成,而这不会妨碍用户.PyTo ...
- 将TVM集成到PyTorch上
将TVM集成到PyTorch上 随着TVM不断展示出对深度学习执行效率的改进,很明显PyTorch将从直接利用编译器堆栈中受益.PyTorch的主要宗旨是提供无缝且强大的集成,而这不会妨碍用户.为此, ...
- Vitis-AI集成
Vitis-AI集成 Vitis-AI是Xilinx的开发堆栈,用于在Xilinx平台(包括边端设备和Alveo卡)上进行硬件加速的AI推理.它由优化的IP,工具,库,模型和示例设计组成.设计时考虑到 ...
- 中继TensorRT集成
中继TensorRT集成 介绍 NVIDIA TensorRT是用于优化深度学习推理的库.这种集成将使尽可能多的算子从Relay转移到TensorRT,从而无需调整调度,即可在NVIDIA GPU上提 ...
- 如何在TVM上集成Codegen(下)
如何在TVM上集成Codegen(下) Bring DNNL to TVM: JSON Codegen/Runtime 现在实现将Relay,序列化为JSON表示的DNNL codegen,然后实现D ...
- 如何在TVM上集成Codegen(上)
如何在TVM上集成Codegen(上) 许多常用的深度学习内核,或者提供DNNL或TensorRT等框架和图形引擎,让用户以某种方式描述模型,从而获得高性能.此外,新兴的深度学习加速器也有自己的编译器 ...
- TensorRT宏碁自建云(BYOC, BuildYourOwnCloud)上集成
TensorRT宏碁自建云(BYOC, BuildYourOwnCloud)上集成 这个PR增加了对分区.编译和运行TensorRT BYOC目标的支持. Building 有两个新的cmake标志: ...
最新文章
- 不止最佳长论文,腾讯AI在ACL上还有这些NLP成果(附论文链接)
- 子module 引入so库,aar文件配置
- ms sql 聚合事例
- python识别简单训练模型_Python3+OpenCV实现简单交通标志识别
- java读取邮箱附件_使用javamail获取附件内容
- grassfire算法
- linux 内核 发送数据类型,Linux内核数据类型及跨平台
- 转载需作者授权是如何实现的
- 频率单位Hz、MHz、GHz、THz、PHz、EHz换算关系
- Java开发 音视频会议
- win10开始菜单应用图标丢失
- Unity TextMeshPro显示中文
- snakeyaml操作yml文件中注释的处理
- IIS部署ASP网站项目详细教程(内部含有子目录)
- 计算机绘画社团活动教案,电脑绘画社团课教师教案.doc
- lgv20刷twrp_LG V30+ 日版 L-01K 刷机解锁BL 刷入TWR 回复日版基带
- 人工智能:免疫算法概述
- ABAP 动态控制选择屏幕 / Free Selection
- 对智能手表的功能买点认知介绍
- 【洛谷】P1010 幂次方
热门文章
- 益和VA 虚拟化应用安全性深度体验
- 物联网安全的现状简述
- ICSE NIER 2017 论文阅读 - Production-Driven Patch Generation
- Bootstrap - 跟着李南江学编程
- 联发科最新MT6739 Sensor移植资料
- 华为云“DDoS高防+CDN”联动
- beanmapper java_java – 在Spring中配置ObjectMapper
- Python 使用turtle模块绘制统计柱状图
- HTML CSS基本语法
- error:2006D080:BIO routines:BIO_new_file:no such file