1.基础框架搭建

spring的基础核心包: + 第三方jar包
image.pngimage.png

配置文件

名字和位置可以任意:建议在类路径src根目录下,官方推荐applicationContext.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="
  5. http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans.xsd">
  7. <!-- bean definitions here -->
  8. <!-- Spring配置文件:一个Bean就是一个对象,id就是对象名,class对应类的全限定名 -->
  9. <bean id="someServiceImp" class="com.woniuxy.Service01.SomeServiceImp"/>
  10. </beans>

测试

image.png
spring底层会通过反射+配置文件帮你生成一个someService对象,你只需通过getBean(“对象id”)方法直接获取到对象。Spring的主要作用就是解耦。

2.Spring+Mybatis

mybatais的jar包 + Spring的jar
image.pngimage.png
+Spring对Mybatis整合包:MyBatis提供 + 其他jar包
image.pngimage.png
总共21个jar包。
mybatis的配置文件,放在src下。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <!-- 主配置文件名字可以任意,有意义,位置在src目录下 -->
  6. <configuration>
  7. <!-- 会自动扫描指定包下的实体类 -->
  8. <typeAliases>
  9. <package name="com.woniuxy.entity" />
  10. </typeAliases>
  11. <!-- jdbc四大参数在spring中配置 -->
  12. <mappers>
  13. <!-- 指定映射文件所在包,名字必须和接口一样,包括大小写 -->
  14. <package name="com.woniuxy.dao" />
  15. </mappers>
  16. </configuration>

主配置文件,放在src下。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:aop="http://www.springframework.org/schema/aop"
  6. xmlns:tx="http://www.springframework.org/schema/tx"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans
  8. http://www.springframework.org/schema/beans/spring-beans.xsd
  9. http://www.springframework.org/schema/context
  10. http://www.springframework.org/schema/context/spring-context.xsd
  11. http://www.springframework.org/schema/aop
  12. http://www.springframework.org/schema/aop/spring-aop.xsd
  13. http://www.springframework.org/schema/tx
  14. http://www.springframework.org/schema/tx/spring-tx.xsd">
  15. <!-- Spring整合MyBatis:有Spring容器创建MyBatis的核心类
  16. SqlSessionFactoryBean:创建SqlSessionFactory -->
  17. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  18. <!-- 设置MyBatista主配置文件位置 -->
  19. <property name="configLocation" value="classpath:mybatisconfig.xml" />
  20. <!-- 设置数据源 -->
  21. <property name="dataSource" ref="dataSource" />
  22. </bean>
  23. <!-- 配置数据源 -->
  24. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  25. <property name="driverClass" value="${jdbc.driver}" />
  26. <property name="jdbcUrl" value="${jdbc.url}" />
  27. <property name="user" value="${jdbc.username}" />
  28. <property name="password" value="${jdbc.password}" />
  29. </bean>
  30. <!-- 指定四大参数properties文件位置,放在src下 -->
  31. <context:property-placeholder location="classpath:jdbc.properties" />
  32. <!-- 获取sqlSession,在mybatis中获取Dao接口实现类对象用sqlSession.getMapper()。
  33. MapperScannerConfigurer:自动扫描指定包(dao接口所在包)
  34. 自动生成dao接口的实现类,对应bean的id:如接口为StudentDao,则实现类名为:studentDao -->
  35. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  36. <property name="basePackage" value="com.woniuxy.dao" />
  37. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
  38. </bean>
  39. </beans>

DI注解

在spring框架中,生成bean的方式有两种,一种是配置文件的方式,另一中方式是通过注解。这里我们先介绍常用的注解方式生成bean。
注解生成bean底层使用了AOP,所以我们还得添加jar包:image.png
在配置文件中我们还需添加元素,来告诉框架扫描指定包下的注解。

  1. <!--扫描包下的注解 -->
  2. <!--
  3. com.woniuxy.service 扫描当前包及其子包
  4. com.woniuxy.service.* 扫描当前包的子包(当前包的直接下层类,当前包下的类不会扫描)
  5. -->
  6. <context:component-scan base-package="com.woniuxy.service.imp" />

3.Spring+MyBatis+AOP

AOP是一种编程思想,很多框架都实现了AOP
Spring自己实现了AOP,使用麻烦:
IoC的基本jar+aop联盟包(官方组织,定义规范,aop接口)+aop.jar

AspectJ框架也实现,Spring官方也推荐使用AspectJ
IoC的基本jar+aop联盟包(官方组织,定义规范,aop接口)+aop.jar+aspectJ.jar
+spring对apsectj整合包
jar包:
image.png
整合AOP主要是实现事务的控制。

事务配置

事务的配置有两种方式,一中是使用使用AOP,可另一种使用Aspectj,我们主要使用Aspectj来配置。
在主配置文件中加入:

  1. <!-- 配置事务管理器 -->
  2. <bean id="transactionManager"
  3. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  4. <property name="dataSource" ref="dataSource" />
  5. </bean>
  6. <!-- 配置事务通知 -->
  7. <tx:advice id="txAdvice" transaction-manager="transactionManager">
  8. <!-- 配置事务属性 -->
  9. <tx:attributes>
  10. <!-- isolation隔离级别,propagation传播机制,rollback-for受查异常一样回滚 -->
  11. <tx:method name="change*" isolation="DEFAULT" propagation="REQUIRED"
  12. rollback-for="Exception" />
  13. </tx:attributes>
  14. </tx:advice>
  15. <aop:config>
  16. <aop:pointcut expression="execution(* *..service.*.*(..))" id="txpointcut"/>
  17. <!-- 顾问,对通知的封装 -->
  18. <aop:advisor advice-ref="txAdvice" pointcut-ref="txpointcut"/>
  19. </aop:config>

4.Spring+MyBatis+AOP+MVC

SpringMVC就是Spring的一个模块,替换Servlet,是一个WebMVC框架。
jar包:增加
image.png
web.xml配置:

  1. <servlet>
  2. <servlet-name>springmvc</servlet-name>
  3. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  4. <init-param>
  5. <param-name>contextConfigLocation</param-name>
  6. <param-value>classpath:springmvc.xml</param-value>
  7. </init-param>
  8. </servlet>
  9. <servlet-mapping>
  10. <servlet-name>springmvc</servlet-name>
  11. <url-pattern>/*.do</url-pattern>
  12. </servlet-mapping>