spring之6

1.spring整合hibernate:
1.本质就是:spring容器来管理hibernate的sessionFactory
2.实现方式:
  第一步:
spring框架提供了一个类:org.springframework.orm.hibernate5.LocalSessionFactoryBean
这个类是一个SessionFactory的工厂类,它可以产生SessionFactory;根据我们配置hibernate.cfg.xml的
经验,我们知道:SessionFactory的创建是需要一些基本参数,比如连接池(数据源) ,方言,以及 实体映射
等等信息,所以在spring来接管sessionFactory时,该有的信息还是一个都不能少:

<!-- 加载属性配置文件 -->
<context:property-placeholder location="classpath:db.properties" />


<!-- 注册数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>


<!-- 注册localsessionfactory -->
<bean id="localSessionFactoryBean"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<!-- 引入数据源 -->
<property name="dataSource" ref="dataSource"></property>
<!-- 基本属性配置 -->
<property name="hibernateProperties">
<value>
hibernate.show.sql=true
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.hbm2ddl.auto=update
hibernate.format_sql=true
</value>
</property>


<!-- 引入实体类映射 -->
<property name="mappingDirectoryLocations" value="cn/itheima/domain"></property>
</bean>


  第二步:
另外在web.xml中要配置一个监听器,ContextLoaderListener,这个这个监听器在web服务器启动时给我们
创建一个BeanFactory的实现类对象(WebApplicationContext对象),这相当于开启了Spring,然后Spring就会
加载它的配置文件,为Spring配置文件中的单例bean创建对象,因为 localSessionFactoryBean 也在里边,所以
也被创建了,那么此时此刻,Spring容器中就有了这个对象了,它可以获得 SessionFactory,进而实现hibernate
持久化操作;
<!-- spring的配置以下 -->
<context-param>
<!-- 告诉下边的过滤器spring的配置文件的位置 -->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<!-- 这个监听器在web服务器启动时,给我们创建一个 WebApplicationContext对象,然后放在 ServletContext域中, 
servletContext.setAttribute (WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, 
this.context); 其中: this.context = createWebApplicationContext(servletContext); -->

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- spring的配置以上 -->

2.spring整合hibernate的流程总结:
第一步:
由于在web中配置了 ContextLoaderListener ,这个监听器导致ServletContext一旦创建,就会触发监听事件:加载Spring的
配置文件 applicationContext.xml ,这直接导致了Spring的开启,和配置中单例bean的实体对象的创建,至此,我们完成了
服务器开启就直接触发Spring的开启;
第二步:
我们把 localSessionFactoryBean 也配置到applicationContext.xml,这直接导致了 SessionFactory 被纳入了Spring的
管理,也就实现了Spring与Hibernate的整合;
因为Spring与Hibernate整合的本质就是: SessionFactory 纳入了Spring容器的管理;这个时候我们可以从Spring容器获得
SessionFactory ;

3.struts2与spring整合:
1.本质就是:action从spring中获得service注入:
2.实现方式:
1.将action也纳入spring管理中,action由spring来创建;由于action处在spring管理中的bean获得其它bean的注入式天经地义的,
所以,这个可以实现action从spring中获得service注入;
2.不将action纳入spring管理,action由SpringObjectFactory来创建 通过 struts2-spring-plugin-2.3.24.jar 中的
SpringObjectFactory来从spring容器中获得service,然后注入到action中;ps:service的注入默认是依据set方法后
的属性名称来匹配的;但是可以通过配置一个常量来改变注入规则,比如说按类型,或者auto;




1.模型驱动id
2.dao层构造传参


3.文件上传与获取路径问题,上传是保存的绝对路径,获取是工程路径?


4.jsp的优势,存在价值?

5.三大框架注解配置是如何被识别的? 有何特点?
6.三大框架总结;
7.struts不是参数只能是成员变量吗?

struts2与spring整合可以用@autowired























4.@atuowired注入方式是不是不需要被注入的类在spring管理中?
5.dao中注入sessionFactory
6.既然 spring整合hibernate的 本质就是:spring容器来管理hibernate的 sessionFactory 为啥不直接把 sessionFactory
放入到spring中管理,而是又创建了一个LocalSessionFactoryBean?






 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值