SSM项目搭建(Spring,Spring mvc ,Mybatis)

2019/06/18 14:38
阅读数 33

各种包就不说了,直接开始配置文件

(一)、mybatis相关的配置,也就是与数据库相关的配

(1)数据源

(2)sqlSessionFactory

(3)mapperScannerConfigurer

不借助配置的mybatis,需要从mybatis.xml中来读数据,加载出一个sqlSessionFactory对象,然后sqlSession对象从sqlSessionFactory.openSession().getMapper(XXXDao.class);

mybatis.xml中一般配置的有数据源,然后这样就可以获取数据源并且找到XXXDao对应接口的映射xml文件,这样就很容易实现操作数据库的对象sqlSession了,但是有了spring,

这些对象都可以通过spring的ioc来管理了,不需要做这些获取对象的操作,直接注入属性值就可以了具体如下

开启扫描

<context:component-scan base-package="com.lyb.oa.dao"></context:component-scan>

数据源
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
  <property name="url" value="jdbc:mysql://localhost:3306/oa?useUnicode=true&amp;characterEncoding=utf-8"></property>
  <property name="username" value="root"></property>
  <property name="password" value="" ></property>
</bean>
sessionFactory要关联数据源和别名,不然要在xml中写好多包,重复
<bean name="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource"></property>
  <property name="typeAliasesPackage" value="com.lyb.oa.entity"></property>
</bean>
映射扫描,这里的sqlSessionFactoryBeanName要配置为value哦!!!源码里这就是个String类型的属性

下面的basePackage的值就是xml放的位置,否则会找不到映射
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  <property name="sqlSessionFactoryBeanName" value="sessionFactory"></property>
  <property name="basePackage" value="com.lyb.oa.dao"></property>
</bean>

(二)、申明式事务,也就是业务相关的配置

因为在数据层主要就是Dao,视图层打交道的就是控制器controller,servlet等相关的类,而业务层的申明式事务就是要在这些类对象的方法执行的时候对其封装为一个事务,对其加强,与具体业务息息相关。所以要在业务层配置事务。ACID

<!-- 业务层相关 ,申明式事务-->
<aop:aspectj-autoproxy/>

<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 通知 设置通知,查询相关方法不涉及事务处理,其他有对数据库做操作的需要强制添加事务propagation="REQUIRED"-->
<tx:advice id="txAdvice" transaction="txManager">
<tx:attributes>
  <tx:method name="get*" read-only="true"></tx:method>
  <tx:method name="find*" read-only="true"></tx:method>
  <tx:method name="query*" read-only="true"></tx:method>
  <tx:method name="search*" read-only="true"></tx:method>
  <tx:method name="*" propagation="REQUIRED"></tx:method>
</tx:attributes>
</tx:advice>
<!-- 织入通知到切入点 所有的业务方法都可以式切入点,将这些切入点和通知关联起来就配置OK了-->
<aop:config>
    <aop:pointcut id="txpc" execution="execution(* com.lyb.oa.service.*.*(..))"></aop:pointcut>
    <aop:advisor advice-ref="txAdvice" pointcut-ref="txpc"></aop:advisor>
</aop:config>

(三)、与视图相关的配置,也就是整合spring-mvc了

最基本的有三点1、开启springmvc的注解   2、静态资源访问设置默认不通过核心控制器  3、视图解析器

<!-- mvc相关注解 -->
<mvc:annotion-driven></mvc:annotion-driven>
<!-- 静态资源访问 -->
<mvc:default-servlet-handler></mvc:default-servlet-handler>
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
  <property name="prefix" value="/WEB-INFO/pages/"></property>
  <property name="subfix" value=".jsp"></property>
</bean>

(四)、最后web项目在启动的时候是要从web.xml作为读取文件入口的,所以需要在web.xml中加载spring mvc相关的配置核心控制器,其他组件用注解就可以自己去操作了

<servlet>
  <servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:spring-web.xml</param-value>
</init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

 

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部