• 【SpringMVC】SpringMVC+Spring+Mybatis整合开发


    4).Spring + SpringMVC + Mybatis整合开发

    环境搭建
    1) 导入jar
    spring的jar、日志的jar、mybatis的jar、mybatis-spring的jar、oracle的jar、连接池的jar、aop的依赖(asm cglib aspectj)
    2) 导入配置文件
    	web.xml
    	mvc.xml [开启注解开发mvc、注解管理Controller]  	---小spring工厂
    	applicationContext.xml[管理连接池、事务相关、mybatis相关、开启注解管理service]  ---大spring工厂
    	自定义的application.properties
    	注意:springmvc的小spring工厂,能够使用到spring的大工厂中的对象
    3) 初始化配置
    	①web.xml:
    		springmvc核心控制器
    		指定mvc配置文件的路径
    		编码设置的filter
    		spring工厂初始化的监听器
    		spring配置文件初始化
    		代码:
    		<!-- springMVC核心控制器 -->
      <servlet>
      	<servlet-name>SpringMVC</servlet-name>
      	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      	<!-- 指定springMVC配置文件路径 -->
      	<init-param>
      		<param-name>contextConfigLocation</param-name>
      		<param-value>classpath:/mvc.xml</param-value>
      	</init-param>
      	<!-- 设置在tomcat启动创建控制器 -->
      	<load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
      	<servlet-name>SpringMVC</servlet-name>
      	<!-- 指定所有的springMVC控制器访问以.do结尾 -->
      	<url-pattern>*.do</url-pattern>
      </servlet-mapping>
      <!-- 编码设置,spring自带的过滤器 -->
      <filter>
      	<filter-name>encodingFilter</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>forceResponseEncoding</param-name>
    			<param-value>true</param-value>
    		</init-param>
      </filter>
      <filter-mapping>
      	<filter-name>encodingFilter</filter-name>
      	<url-pattern>*.do</url-pattern>
      </filter-mapping>
      
      <!-- spring工厂初始化监听器 -->
      <listener>
      	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
      <!-- 标明加载spring工厂的配置文件路径 -->
      <context-param>
      	<param-name>contextConfigLocation</param-name>
      	<param-value>classpath:/applicationContext.xml</param-value>
      </context-param>
    	②mvc.xml
    		注解管理controller
    		注解开发mvc
    		代码:
    <!-- 1. 开启注解管理Controller对象 IOC注解:只能扫描Controller -->
    	<context:component-scan base-package="com.jwnming.controller"></context:component-scan>
    	<!-- 2. 开启注解开发mvc(映射访问路径)  MVC注解 -->
    	<mvc:annotation-driven/>
    	③applicationContext.xml
    		引入外部properties配置文件
    		开启注解管理service[除了controller以外的对象]
    		连接池
    		事务相关[事务管理器、事务增强、aop] 
    		mybatis相关配置[SqlSessionFactoryBean、MapperScannerConfigurer]
    		代码:
    		<!-- 引入properties配置文件 -->
        <context:property-placeholder location="classpath:application.properties"/>
    	<!-- 开启注解:service+test -->
    	<context:component-scan base-package="com.baizhi.service"></context:component-scan>
    	<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~1.连接池~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
         <bean id="ds" class="com.alibaba.druid.pool.DruidDataSource">
    		<!—配置的值在application.properties文件中 -->
         	<property name="driverClassName" value="${database.driverClassName}"></property>
         	<property name="url" value="${database.url}"></property>
         	<property name="username" value="${database.username}"></property>
         	<property name="password" value="${database.password}"></property>
         	<property name="initialSize" value="${database.initialSize}"></property>
         	<property name="maxActive" value="${database.maxActive}"></property>
         	<property name="maxWait" value="${database.maxWait}"></property>
         </bean>
    	
    	<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~事务相关~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    	<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    		<property name="dataSource" ref="ds"></property>
    	</bean>
    	<tx:advice id="txAdvice" transaction-manager="txManager">
    		<tx:attributes>
    			<tx:method name="login" read-only="true" propagation="SUPPORTS"/>
    			<tx:method name="regist" propagation="REQUIRED"/>
    			<tx:method name="get*" read-only="true" propagation="SUPPORTS"/>
    			<tx:method name="*" propagation="REQUIRED"/>
    		</tx:attributes>
    	</tx:advice>
    	<aop:config>
    		<aop:pointcut expression="execution(* com.baizhi.service.impl.*.*(..))" id="pc"/>
    		<aop:advisor advice-ref="txAdvice" pointcut-ref="pc"/>
    	</aop:config>
    	
    	<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~mybatis相关~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    	<bean id="sf" class="org.mybatis.spring.SqlSessionFactoryBean">
    		<!-- 连接池 -->
    		<property name="dataSource" ref="ds"></property>
    		<!-- maspper文件注册路径 -->
    		<property name="mapperLocations" value="${mybatis.mapperLocations}"></property>
    		<!-- 别名 -->
    		<property name="typeAliasesPackage" value="${mybatis.typeAliasesPackage}"></property>
    	</bean>
    	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    		<!-- 指定需要的sqlSessionfactory -->
    		<property name="sqlSessionFactoryBeanName" value="sf"></property>
    		<!-- 指定dao接口所在的包 -->
    		<property name="basePackage" value="com.baizhi.dao"></property>
    	</bean>
    
  • 相关阅读:
    N!的位数
    c语言memset()函数
    通宵教室(ACM水题)
    欧拉函数+素数筛
    快速幂+大数取模
    观光浏览
    插入类排序(直接插入排序)
    showDoc使用方法
    $_POST与input('post.')区别
    “三日”面试官心得
  • 原文地址:https://www.cnblogs.com/jwnming/p/13635260.html
Copyright © 2020-2023  润新知