spring-mvc/applicationContext配置文件学习笔记

Spring-mvc.xml和applicationContext.xml的关系

  • applicationContext.xml的内容

    1. 配置需要读取的properties文件
      <context:property-placeholder location="classpath:properties/db.properties"/>
      声明sql数据库的库信息去哪里找
    • 配置数据源
      <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driver}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <property name="maxPoolSize" value="30"/> <property name="minPoolSize" value="2"/> </bean>
      这里分别配置了 数据库驱动类数据库url数据库账号数据库的连接数量上下限
      xml配置中的<context:property-placeholder … />对应于PropertyPlaceholderConfigurer类,其使用location属性用于指定配置文件所在的位置。 配置文件按键=值对的方式组织,每行一对。可以在xml其他位置按${键}的方式引用值。
      配置数据源
      c3p0是一个高性能jdbc3的链接池库,提供3种使用方法。 本示例中使用的是用xml配置JavaBean风格的ComboPooledDataSource。 bean内部的property元素配置了ComboPooledDataSource的属性对应的值。

    • 配置SqlSessionFactory对象

      <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      <!-- 注入数据库连接池 -->
      <property name="dataSource" ref="dataSource"/>
      <!-- 扫描bean包 使用别名 -->
      <property name="typeAliasesPackage" value="com.zr.people_manage.entity"/>
      <!--配置加载映射文件 UserMapper.xml,很容易写错-->
      <property name="mapperLocations" value="classpath:mapper/*.xml"/>
      

      SqlSessionFactory对象可以帮我们实现数据库接口,配置 映射文件的位置让SqlSessionFactory可以找到需要实现的接口和sql语句
      SqlSessionFactory配置作用
      SqlSessionFactory是MyBatis的关键对象,它是个单个数据库映射关系经过编译后的内存镜像.SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象类获得,而SqlSessionFactoryBuilder则可以从XML配置文件或一个预先定制的Configuration的实例构建出SqlSessionFactory的实例.每一个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心.同时SqlSessionFactory也是线程安全的,SqlSessionFactory一旦被创建,应该在应用执行期间都存在.在应用运行期间不要重复创建多次,建议使用单例模式.SqlSessionFactory是创建SqlSession的工厂.

    • 配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中

    	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 给出需要扫描Dao接口包,这里很容易写错 -->
        <property name="basePackage" value="com.zr.people_manage.dao"/>
        <!-- 注入sqlSessionFactory -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>
    

    配置需要扫描的Dao包,这样可以自动实现接口
    Mybatis在与Spring集成的时候配置MapperFactoryBean来生成Mapper接口的代理,MapperFactoryBean 创建的代理类实现了 dao 包下的接口,并且注入到应用程序中。因为代理创建在运行时环境中,所以指定的映射器必须是一个接口,而不是一个具体的实现类。我们完全没有必要在
    Spring 的 XML 配置文件中注册所有的映射器。相反,可以使用一个 MapperScannerConfigurer,
    它 将 会 查 找 类 路 径 下 的 映 射 器 并 自 动 将 它 们 创 建 成 MapperFactoryBean。

    上面的代码则创建了 MapperScannerConfigurer。
    basePackage 属性为映射器接口文件设置基本的包路径。每个映射器将会在指定的包路径中递归地被搜索到。这里通过键值对的方式给出了需要扫描Dao接口包。
    使用sqlSessionFactoryBeanName的方式来注入sqlSessionFactory,sqlSessionFactoryBeanName 属性的value值是SqlSessionFactory的bean的名字,也就是sqlSessionFactory的id,通过BeanName后处理的方式,当我们去用我们的Mybatis的时候,它才会去找我们对应的sqlSessionFactory,为了防止它提前初始化我们的sqlSessionFactory

    • 自动扫描需要交给spring管理的类
      <context:component-scan base-package="com.zr.people_manage.dao"/> <context:component-scan base-package="com.zr.people_manage.service"/>

    • 配置事务管理器
      <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean>

    • 开启事务注解

      <tx:annotation-driven/>
      
  • Spring-mvc.xml的内容
    这个xml主要配置数据与视图之间的适配

    1. 注解扫描位置
      <context:component-scan base-package="com.zr.people_manage.controller" />
      
    2. 配置映射处理和适配器
    	<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
    
    1. 视图的解析器
		<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

他们之间的区别

  • 为什么要将两个xml文件分开?

    两者的配置内容有很大的区别,spring-mvc.xml配置与视图相关,而applicationContext.xml的配置与数据保持层和控制层相关。虽然两者可以合成一个xml,但是这显然会增加耦合度。

  • 分开有什么好处?

    由于两者配置内容有很大的区别,所以导致两者的通用性有很大差别。applicationContext.xml的内容由于与视图无关,所以它能够用于更多的场合,如客户端应用和web应用。而spring-mcv的内容是与视图相关的,所以限定了它的应用场合,web的视图放到客户端就不适用了。将两部分分开的好处就是减少耦合度。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

先写作业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值