spring整合

spring整合hibernate,整合什么?

1. Spring 整合 Hibernate 整合什么 ?1). 有 IOC 容器来管理 Hibernate 的 SessionFactory
2). 让 Hibernate 使用上 Spring 的声明式事务2. 整合步骤:1). 加入 hibernate
①. jar 包
②. 添加 hibernate 的配置文件: hibernate.cfg.xml
③. 编写了持久化类对应的 .hbm.xml 文件。 2). 加入 Spring
①. jar 包
②. 加入 Spring 的配置文件3). 整合.3. 编写代码

 

加入hibernate4的jar包,lib\required下有8个,全加入。

加入mysql驱动

加入c3p0

加入spring4的jar包,required下15个

整合的时候,我该怎么用hibernate呢?用hibernate,需要他的sessionFactory,可以从当前线程中获取与线程绑定的 sessionFactory ,他是线程安全的

这样用:

在daoimpl里:

@Autowired
private SessionFactory sessionFactory;//不推荐使用 HibernateTemplate 和 HibernateDaoSupport
//因为这样会导致 Dao 和 Spring 的 API 进行耦合
//可以移植性变差
//    private HibernateTemplate hibernateTemplate;//获取和当前线程绑定的 Session. 
private Session getSession(){return sessionFactory.getCurrentSession();
}

 spring整合web应用:

1. Spring 如何在 WEB 应用中使用 ?1). 需要额外加入的 jar 包:spring-web-4.0.0.RELEASE.jar
spring-webmvc-4.0.0.RELEASE.jar2). Spring 的配置文件, 没有什么不同3). 如何创建 IOC 容器 ? ①. 非 WEB 应用在 main 方法中直接创建
②. 应该在 WEB 应用被服务器加载时就创建 IOC 容器: 在 ServletContextListener#contextInitialized(ServletContextEvent sce) 方法中创建 IOC 容器.③. 在 WEB 应用的其他组件中如何来访问 IOC 容器呢 ?在 ServletContextListener#contextInitialized(ServletContextEvent sce) 方法中创建 IOC 容器后, 可以把其放在
ServletContext(即 application 域)的一个属性中. ④. 实际上, Spring 配置文件的名字和位置应该也是可配置的! 将其配置到当前 WEB 应用的初始化参数中较为合适. 2. Spring 如何整合 Struts2 ?

创建一个listener:

为了spring的配置文件的可配置,在web.xml文件中,初始化参数:

<context-param>
<param-name>configLocation</param-name>
<param-value>applicationContext.xml</param-value>
</context-param>

然后在listener中获取参数并初始化ioc容器,并放到servletContext中:

/*** @see ServletContextListener#contextInitialized(ServletContextEvent)*/
public void contextInitialized(ServletContextEvent arg0) {//1. 获取 Spring 配置文件的名称. ServletContext servletContext = arg0.getServletContext();String config = servletContext.getInitParameter("configLocation");//1. 创建 IOC 容器ApplicationContext ctx = new ClassPathXmlApplicationContext(config);//2. 把 IOC 容器放在 ServletContext 的一个属性中. servletContext.setAttribute("ApplicationContext", ctx);
}

之后就可以开始servlet开发了 :

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1. 从 application 域对象中得到 IOC 容器的引用ServletContext servletContext = getServletContext();ApplicationContext ctx = (ApplicationContext) servletContext.getAttribute("ApplicationContext");//2. 从 IOC 容器中得到需要的 beanPerson person = ctx.getBean(Person.class);person.hello();
}

其实spring有给提供listener,直接用即可

4). 在 WEB 环境下使用 Spring①. 需要额外加入的 jar 包:spring-web-4.0.0.RELEASE.jar
spring-webmvc-4.0.0.RELEASE.jar②. Spring 的配置文件, 和非 WEB 环境没有什么不同③. 需要在 web.xml 文件中加入如下配置:<!-- 配置 Spring 配置文件的名称和位置 -->
<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value>
</context-param><!-- 启动 IOC 容器的 ServletContextListener -->
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

spring整合struts2整合什么?: 使IOC容器来管理struts2的action!

 

1. Spring 如何在 WEB 应用中使用 ?1). 需要额外加入的 jar 包:spring-web-4.0.0.RELEASE.jar
spring-webmvc-4.0.0.RELEASE.jar2). Spring 的配置文件, 没有什么不同3). 如何创建 IOC 容器 ? ①. 非 WEB 应用在 main 方法中直接创建
②. 应该在 WEB 应用被服务器加载时就创建 IOC 容器: 在 ServletContextListener#contextInitialized(ServletContextEvent sce) 方法中创建 IOC 容器.③. 在 WEB 应用的其他组件中如何来访问 IOC 容器呢 ?在 ServletContextListener#contextInitialized(ServletContextEvent sce) 方法中创建 IOC 容器后, 可以把其放在
ServletContext(即 application 域)的一个属性中. ④. 实际上, Spring 配置文件的名字和位置应该也是可配置的! 将其配置到当前 WEB 应用的初始化参数中较为合适. 4). 在 WEB 环境下使用 Spring①. 需要额外加入的 jar 包:spring-web-4.0.0.RELEASE.jar
spring-webmvc-4.0.0.RELEASE.jar②. Spring 的配置文件, 和非 WEB 环境没有什么不同③. 需要在 web.xml 文件中加入如下配置:<!-- 配置 Spring 配置文件的名称和位置 -->
<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value>
</context-param><!-- 启动 IOC 容器的 ServletContextListener -->
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>2. Spring 如何整合 Struts2 ?1). 整合目标 ? 使 IOC 容器来管理 Struts2 的 Action!2). 如何进行整合 ? ①. 正常加入 Struts2②. 在 Spring 的 IOC 容器中配置 Struts2 的 Action
注意: 在 IOC 容器中配置 Struts2 的 Action 时, 需要配置 scope 属性, 其值必须为 prototype<bean id="personAction" class="com.atguigu.spring.struts2.actions.PersonAction"scope="prototype"><property name="personService" ref="personService"></property>    
</bean>③. 配置 Struts2 的配置文件: action 节点的 class 属性需要指向 IOC 容器中该 bean 的 id<action name="person-save" class="personAction"><result>/success.jsp</result>
</action> ④. 加入 struts2-spring-plugin-2.3.15.3.jar3). 整合原理: 通过添加 struts2-spring-plugin-2.3.15.3.jar 以后, Struts2 会先从 IOC 容器中
获取 Action 的实例.if (appContext.containsBean(beanName)) {o = appContext.getBean(beanName);
} else {Class beanClazz = getClassInstance(beanName);o = buildBean(beanClazz, extraContext);
}

 

转载于:https://www.cnblogs.com/orco/p/6297616.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572806.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 进程不关闭_java运行程序关不了窗口

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼package office菜单;import java.awt.Frame;import java.awt.Menu; //菜单组件import java.awt.MenuBar; //菜单条组件import java.awt.MenuItem; //菜单项组件public class frameTest {public static void main(String[] args) {f…

看看大货车到底有多少盲区,肯定用得到!救命的!

上路的司机都知道&#xff0c;一旦看到大货车就要离它远远的&#xff0c;因为大货车的盲区大。可是又有多少轿车司机懂得盲区在哪里呢?不仅是轿车司机&#xff0c;许多行人和非机动车辆对于大货车的盲区也是一知半解&#xff0c;常常有人因此丧命。 行人篇 先给大家看一张最直…

msgpack java lua_使用lua-cmsgpack序列化和反序列化lua对象

原文在简书首发&#xff1a;http://www.jianshu.com/p/badf412db4e7lua-cmsgpack是一个开源的MessagePack实现方式、纯C的库&#xff0c;没有任何其它依赖&#xff0c;编译后可以直接被lua调用&#xff0c;目前主要支持Lua5.1/5.2/5.3 版本。1、什么是MessagePack&#xff1f;-…

Oracle-11g 基于 NBU 的 rman 冷备份及恢复

备份恢复环境&#xff1a; (1).源端&#xff1a;SUSE Enterprise Linux 11Oracle 11g 11.2.0.3.6&#xff08;RAC&#xff09;(2).目标端&#xff1a;SUSE Enterprise Linux 11Oracle 11g 11.2.0.3.6&#xff08;RAC&#xff09;冷备份及恢复情形&#xff1a;冷备份 odsdb 集群…

全国250米DEM数据

全国250米DEM数据 DEM是数字高程模型的英文简称(Digital Elevation Model)&#xff0c;是研究分析地形、流域、地物识别的重要原始资料。由于DEM 数据能够反映一定分辨率的局部地形特征&#xff0c;因此通过DEM 可提取大量的地表形态信息&#xff0c;可用于绘制等高线、坡度图、…

redis集群连接 java_Redis分布式集群和直连的Java客户端调用方式详解

jedis是一个著名的key-value存储系统&#xff0c;而作为其官方推荐的java版客户端jedis也非常强大和稳定&#xff0c;支持事务、管道及有jedis自身实现的分布式。在这里对jedis关于事务、管道和分布式的调用方式做一个简单的介绍和对比&#xff1a;一、普通同步方式最简单和基础…

【bzoj1705】[Usaco2007 Nov]Telephone Wire 架设电话线 dp

题目描述 最近&#xff0c;Farmer John的奶牛们越来越不满于牛棚里一塌糊涂的电话服务 于是&#xff0c;她们要求FJ把那些老旧的电话线换成性能更好的新电话线。 新的电话线架设在已有的N(2 < N < 100,000)根电话线杆上&#xff0c; 第i根电话线杆的高度为height_i米(1 &…

Loadrunner进行HTTPS协议性能测试

1.最简单办法就是在脚本前面加上&#xff1a;web_set_sockets_option("SSL_VERSION","TLS")&#xff0c;一般能解决HTTPS协议的请求问题&#xff0c;无毒无公害&#xff0c;快速还能解决问题 2.其实对于HTTP跟HTTPS&#xff0c;只是在服务器端配置到底是走…

Linux 权限、磁盘操作命令-Linux基础环境命令学习笔记

1、创建用户和用户组 1&#xff09;用户和用户组 /etc/passwd  保存系统用户的基本信息 /etc/group    保存用户组信息 用户名&#xff1a;x&#xff1a;UID&#xff1a;GID 2&#xff09;基本命令 useradd  增加用户 groupadd  增加用户组 passwd  为用户设置密码…

java伪代码生成器_JAVA单例模式的实现伪代码

什么是单例&#xff1f;&#xff1a;其定义是单例对象的类只能允许一个实例存在单例的实现基本原理&#xff1a;1.将该类的构造方法定义为私有访问&#xff0c;不对外暴露从而使其他类不能实例化该类对象&#xff0c;只能通过该类的静态方法得到该类的唯一实例 2.在该类中定义一…

python怎么存储数据_Python:如何在类中存储数据并继承

我对课程很陌生,我已经写了一个班来做熊猫的操作。分类方法,但我不知道如何使用它们。我的班级目标:我想写一个权限类。它应该加载/写入一个json文件,并且应该能够添加更多的权限。编辑:读了一段时间后,我发现staticmethod还有一个__init__在初始化期间加载文件的。class Permi…

Eclipse手动配置svn

1、在Eclipse根目录下建一个任意文件夹&#xff08;如plugin&#xff09;&#xff0c;在该文件夹下建一个以该插件名命名的文件夹&#xff08;如SVN&#xff09;。2、将下载下的插件文件解压&#xff0c;plugins和features文件夹复制到该文件夹下&#xff08;SVN&#xff09;。…

java爬虫新浪微博_java爬虫(爬新浪新闻) 如何从零开始

爬虫通常搜索引擎处理的对象是互联网网页。首先面临的问题是&#xff1a;如何能够设计出高效的下载系统&#xff0c;以将如此海量的网页数据传送到本地&#xff0c;在本地形成互联网网页的镜像备份。网络爬虫即起此作用&#xff0c;它是搜索引擎系统中很关键也很基础的构件。爬…

Hibernate Query 的 list 和iterate方法缓存的区别

list: quert.list()方法会将从数据库查找到的数据库放到一级缓存和二级缓存,但是不能从一级和二级缓存读取数据,但是可以从二级缓存的查询缓存读取数据, iterate: quert.iterate()方法总会先查找数据表的主键,然后根据每一个主键发送对应的sql语句从数据库读取数据,它可以把数据…

java的type转化class_第七章 (类型转换)Type Convertion

第七章 Type Convertion为什么会有类型转换&#xff1f;HTTP协议中传递的任何内容都是String类型的&#xff0c;所以一旦我们在服务器上需要一个非String类型的对象&#xff0c;例如&#xff1a;int或者Date&#xff0c;那么我们就需要在收到HTTP请求的数据的时候&#xff0c;首…

CodeVS 1068-乌龟棋

原题 题目描述 Description 小明过生日的时候&#xff0c;爸爸送给他一副乌龟棋当作礼物。 乌龟棋的棋盘是一行N个格子&#xff0c;每个格子上一个分数&#xff08;非负整数&#xff09;。棋盘第1格是唯一 的起点&#xff0c;第N格是终点&#xff0c;游戏要求玩家控制一个乌龟棋…

java游戏暂停弹出字体_小白写了个java的小游戏 想加个暂停的功能 无从下手 求大佬们帮...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼第一次写java的小游戏想实现点击右下角的暂停 实现游戏的暂停和继续 不知道该怎么加&#xff0c;自己找了线程的内容但试了还是成功不了&#xff0c;求大佬们帮一下小白。代码有点乱&#xff0c;大佬们见谅。&#xff0c;&#xff…

乔布斯传

资料参考 http://www.ruanyifeng.com/blog/2013/03/apple_inc_and_division_of_labor.html 苹果公司与分工原理 1.乔布斯 "乔布斯买了一间不错的房子&#xff0c;但家里只有一幅帕黎思&#xff08;Maxfield Parrish&#xff09;的画作、一部百灵牌咖啡机和几把双人牌的刀子…

JAVA5000行代码什么概念_GitHub - catstiger/mvc: 一个不超过5000行代码的,快速,简单,易用的MVC框架。...

一个不超过5000行代码的&#xff0c;快速&#xff0c;简单&#xff0c;易用的MVC框架。我们的目的是&#xff1a;让MVC回归其最初的目的。因简单而快速&#xff0c;超过目前各种主流MVC。零侵入&#xff0c;零配置&#xff0c;易于测试&#xff0c;并且让开发者感觉不到MVC的存…

33 Java语言基础控制跳转语句标号

1 public class Add9 {2 public static void main(String[] args) {3 4 a:for (int i 1; i <9 ; i) { // 标号为合法的标识符5 System.out.println("\n");6 b:for (int j 1; j <i ; j) {7 8 System.o…