SSM框架整合:掌握Spring+Spring MVC+MyBatis的完美结合!

SSM整合

  • 1.1 流程分析
  • 1.2 整合配置
    • 步骤1:创建Maven的web项目
    • 步骤2:添加依赖
    • 步骤3:创建项目包结构
    • 步骤4:创建SpringConfig配置类
    • 步骤5:创建JdbcConfig配置类
    • 步骤6:创建MybatisConfig配置类
    • 步骤7:创建jdbc.properties
    • 步骤8:创建SpringMVC配置类
    • 步骤9:创建Web项目入口配置类

1.1 流程分析

(1) 创建工程

  • 创建一个Maven的web工程
  • pom.xml添加SSM需要的依赖jar包
  • 编写Web项目的入口配置类,实现AbstractAnnotationConfigDispatcherServletInitializer重写以下方法。
    • getRootConfigClasses() :返回Spring的配置类->需要SpringConfig配置类。
    • getServletConfigClasses() :返回SpringMVC的配置类->需要SpringMvcConfig配置类。
    • getServletMappings() : 设置SpringMVC请求拦截路径规则。
    • getServletFilters() :设置过滤器,解决POST请求中文乱码问题。

(2)SSM整合[重点是各个配置的编写]。

  • SpringConfig
    • 标识该类为配置类 @Configuration。
    • 扫描Service所在的包 @ComponentScan。
    • 在Service层要管理事务 @EnableTransactionManagement。
    • 读取外部的properties配置文件 @PropertySource。
    • 整合Mybatis需要引入Mybatis相关配置类 @Import。
      • 第三方数据源配置类 JdbcConfig。
        • 构建DataSource数据源,DruidDataSouroce,需要注入数据库连接四要素, @Bean @Value。
        • 构建平台事务管理器,DataSourceTransactionManager,@Bean。
      • Mybatis配置类 MybatisConfig
        • 构建SqlSessionFactoryBean并设置别名扫描与数据源,@Bean。
        • 构建MapperScannerConfigurer并设置DAO层的包扫描。
  • SpringMvcConfig
    • 标识该类为配置类 @Configuration。
    • 扫描Controller所在的包 @ComponentScan。
    • 开启SpringMVC注解支持 @EnableWebMvc。

1.2 整合配置

掌握上述的知识点后,接下来,我们就可以按照上述的步骤一步步的来完成SSM的整合。

步骤1:创建Maven的web项目

可以使用Maven的骨架创建

步骤2:添加依赖

pom.xml添加SSM所需要的依赖jar包



<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0modelVersion>

  <groupId>com.itheimagroupId>
  <artifactId>springmvc_08_ssmartifactId>
  <version>1.0-SNAPSHOTversion>
  <packaging>warpackaging>

  <dependencies>
    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-webmvcartifactId>
      <version>5.2.10.RELEASEversion>
    dependency>

    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-jdbcartifactId>
      <version>5.2.10.RELEASEversion>
    dependency>

    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-testartifactId>
      <version>5.2.10.RELEASEversion>
    dependency>

    <dependency>
      <groupId>org.mybatisgroupId>
      <artifactId>mybatisartifactId>
      <version>3.5.6version>
    dependency>

    <dependency>
      <groupId>org.mybatisgroupId>
      <artifactId>mybatis-springartifactId>
      <version>1.3.0version>
    dependency>

    <dependency>
      <groupId>mysqlgroupId>
      <artifactId>mysql-connector-javaartifactId>
      <version>5.1.47version>
    dependency>

    <dependency>
      <groupId>com.alibabagroupId>
      <artifactId>druidartifactId>
      <version>1.1.16version>
    dependency>

    <dependency>
      <groupId>junitgroupId>
      <artifactId>junitartifactId>
      <version>4.12version>
      <scope>testscope>
    dependency>

    <dependency>
      <groupId>javax.servletgroupId>
      <artifactId>javax.servlet-apiartifactId>
      <version>3.1.0version>
      <scope>providedscope>
    dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.coregroupId>
      <artifactId>jackson-databindartifactId>
      <version>2.9.0version>
    dependency>
  dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.mavengroupId>
        <artifactId>tomcat7-maven-pluginartifactId>
        <version>2.1version>
        <configuration>
          <port>80port>
          <path>/path>
        configuration>
      plugin>
    plugins>
  build>
project>


步骤3:创建项目包结构

  • config目录存放的是相关的配置类。
  • controller编写的是Controller类。
  • dao存放的是Dao接口,因为使用的是Mapper接口代理方式,所以没有实现类包。
  • service存的是Service接口,impl存放的是Service实现类。
  • resources:存入的是配置文件,如Jdbc.properties。
  • webapp:目录可以存放静态资源。
  • test/java:存放的是测试类。

步骤4:创建SpringConfig配置类

@Configuration
@ComponentScan({"com.itheima.service"})
@PropertySource("classpath:jdbc.properties")
@Import({JdbcConfig.class,MyBatisConfig.class})
@EnableTransactionManagement
public class SpringConfig {
}

步骤5:创建JdbcConfig配置类

public class JdbcConfig {
    @Value("${jdbc.driver}")
    private String driver;
    @Value("${jdbc.url}")
    private String url;
    @Value("${jdbc.username}")
    private String username;
    @Value("${jdbc.password}")
    private String password;

    @Bean
    public DataSource dataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driver);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }

    @Bean
    public PlatformTransactionManager transactionManager(DataSource dataSource){
        DataSourceTransactionManager ds = new DataSourceTransactionManager();
        ds.setDataSource(dataSource);
        return ds;
    }
}

步骤6:创建MybatisConfig配置类

public class MyBatisConfig {
    @Bean
    public SqlSessionFactoryBean sqlSessionFactory(DataSource dataSource){
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        factoryBean.setTypeAliasesPackage("com.itheima.domain");
        return factoryBean;
    }

    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer msc = new MapperScannerConfigurer();
        msc.setBasePackage("com.itheima.dao");
        return msc;
    }
}

步骤7:创建jdbc.properties

在resources下提供jdbc.properties,设置数据库连接四要素

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm_db
jdbc.username=root
jdbc.password=root

步骤8:创建SpringMVC配置类

@Configuration
@ComponentScan("com.itheima.controller")
@EnableWebMvc
public class SpringMvcConfig {
}

步骤9:创建Web项目入口配置类

public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    //加载Spring配置类
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }
    //加载SpringMVC配置类
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }
    //设置SpringMVC请求地址拦截规则
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
    //设置post请求中文乱码过滤器
    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
        filter.setEncoding("utf-8");
        return new Filter[]{filter};
    }
}

至此SSM整合的环境就已经搭建好了。

后记
美好的一天,到此结束,下次继续努力!欲知后续,请看下回分解,写作不易,感谢大家的支持!!

你可能感兴趣的:(SSM框架,spring,mvc,mybatis,spring,boot,后端,学习,java)