SSM整合-配置类版

news2024/11/24 4:00:06

目录

  • 一、导入依赖
  • 二、SSM整合
    • 1.1 WebInit配置类
    • 1.2 SpringMvcConfig配置类
    • 1.3 SpringConfig配置类
    • 1.4 JdbcConfig配置类
    • 1.5 MybatisConfig配置类
    • 1.6 mybatis-config.xml配置
    • 1.7 log4j.xml配置
    • 1.8 目录结构

一、导入依赖

  <properties>
    <spring.version>5.3.1</spring.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!-- Mybatis核心-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.7</version>
    </dependency>
    <!--mybatis和spring的整合包-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>2.0.6</version>
    </dependency>
    <!--连接池-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.0.9</version>
    </dependency>
    <!-- junit测试-->
    <dependency>
      <groupId>junit</groupId>I
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <!-- MySQL驱动-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.16</version>
    </dependency>
    <!-- 1og4j日志-->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
    <!-- https://mvnr epository. com/artifact/com. github . pagehe lper /pagehelper -->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>5.2.0</version>
    </dependency>
    <!--日志-->
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.3</version>
    </dependency>
    <!-- ServletAPI -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.12.1</version>
    </dependency>
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>
    <!-- Spring5和Thymeleaf整合包-->
    <dependency>
      <groupId>org.thymeleaf</groupId>
      <artifactId>thymeleaf-spring5</artifactId>
      <version>3.0.12.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.20</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

二、SSM整合

1.1 WebInit配置类

此文件代替了web.xml

/*
* 此配置类代替了web.xml配置文件
*
* */
public class WebInit extends AbstractAnnotationConfigDispatcherServletInitializer {
    //设置一个配置类代替Spring的配置文件
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }
    //设置一个配置类代替SpringMvc的配置文件
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }
    //设置SpringMVC的前端控制器Dispatcherservlet的url-pattern
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
    //设置当前的过滤器

    @Override
    protected Filter[] getServletFilters() {
        //创建编码过滤器
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter("UTF-8",true);
        //创建处理请求方式的过滤器
        HiddenHttpMethodFilter hiddenHttpMethodFilter = new HiddenHttpMethodFilter();

        return new Filter[]{characterEncodingFilter,hiddenHttpMethodFilter};
    }
}

1.2 SpringMvcConfig配置类

此文件代替了springmvc.xml
前后端分离项目可以不用配置视图解析器和模板引擎

/*
 * 此文件代替了springmvc的配置文件
 * 扫描组件、视图解析器、默认的servlet. mvc 的注解驱动
视图控制器、文件上传解析器、拦截器、异常解析器
 * */
//将类标识为配置类
@Configuration
//扫描组件
@ComponentScan({"com.lx.controller","com.lx.config"})
//开启mvc注解驱动
@EnableWebMvc
//@Order(2)
public class SpringMvcConfig implements WebMvcConfigurer {
    //默认的servlet处理静态资源
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

    //设置视图控制器
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");
    }

    //配置文件上传解析器
    @Bean//@Bean注解可以将标识的方法的返回值作为bean进行管理,bean的id为方法的方法名
    public CommonsMultipartResolver multipartResolver() {
        return new CommonsMultipartResolver();
    }

    //配置拦截器
    public void addInterceptors(InterceptorRegistry registry) {
        FirstInterceptor firstInterceptor = new FirstInterceptor();
        registry.addInterceptor(firstInterceptor).addPathPatterns("/**");
    }

    //配置异常处理器
    public void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {
        SimpleMappingExceptionResolver simpleMappingExceptionResolver = new SimpleMappingExceptionResolver();
        Properties prop = new Properties();
        prop.setProperty("java.lang.ArithmeticException", "error");
        simpleMappingExceptionResolver.setExceptionMappings(prop);
        simpleMappingExceptionResolver.setExceptionAttribute("ex");
        resolvers.add(simpleMappingExceptionResolver);
    }

    //配置生成模板解析器
    @Bean
    public ITemplateResolver templateResolver(WebApplicationContext webApplicationContext) {
        //ServletContextTemplateResolver需要一个ServletContext作为构造参数,可通过WebApplicationContext的方法获得
        ServletContextTemplateResolver templateResolver =
                new ServletContextTemplateResolver(webApplicationContext.getServletContext());
        templateResolver.setPrefix("/WEB-INF/templates/");
        templateResolver.setSuffix(".html");
        templateResolver.setCharacterEncoding("UTF-8");
        templateResolver.setTemplateMode(TemplateMode.HTML);
        return templateResolver;
    }
    //生成模板引擎并为模板引擎注入模板解析器
    @Bean
    public SpringTemplateEngine templateEngine(ITemplateResolver templateResolver) {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(templateResolver);
        return templateEngine;
    }
    //生成视图解析器并为解析器注入模板引擎
    @Bean
    public ViewResolver viewResolver (SpringTemplateEngine templateEngine) {
        ThymeleafViewResolver viewResolver = new ThymeleafViewResolver() ;
        viewResolver.setCharacterEncoding("UTF-8");
        viewResolver.setTemplateEngine(templateEngine);
        return viewResolver ;
    }

}

1.3 SpringConfig配置类

此文件用代替了spring.xml

@Configuration
//扫描除控制层组件
@ComponentScan(value = "com.lx",excludeFilters = {
        @ComponentScan.Filter(type = FilterType.ANNOTATION,value = {Controller.class})
})
//开启事务管理
@EnableTransactionManagement
//导入jdbc配置文件
@PropertySource("classpath:jdbc.properties")
//导入配置类
@Import({JdbcConfig.class, MybatisConfig.class})
public class SpringConfig {
}

1.4 JdbcConfig配置类

此文件用来创建Druid数据源以及事务注解驱动

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 DruidDataSource dataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driver);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
    //开启事务管理注解驱动
    @Bean
    public PlatformTransactionManager transactionManager(DruidDataSource dataSource){
        DataSourceTransactionManager dst = new DataSourceTransactionManager(dataSource);
        return  dst;
    }
}

1.5 MybatisConfig配置类

此文件用来配置mybatis

public class MybatisConfig {
    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean(DruidDataSource dataSource,WebApplicationContext webApplicationContext){
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        sqlSessionFactoryBean.setConfigLocation(webApplicationContext.getResource("classpath:mybatis-config.xml"));
        sqlSessionFactoryBean.setTypeAliasesPackage("com.lx.pojo");
        //设置分页插
        PageInterceptor pageInterceptor = new PageInterceptor();
        sqlSessionFactoryBean.setPlugins(pageInterceptor);
        return sqlSessionFactoryBean;
    }
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer scannerConfigurer = new MapperScannerConfigurer();
        scannerConfigurer.setBasePackage("com.lx.mapper");
        return scannerConfigurer;
    }
}

1.6 mybatis-config.xml配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- 开启驼峰命名-->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>

1.7 log4j.xml配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <param name="Encoding" value="UTF-8" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" />
        </layout>
    </appender>
    <logger name="java.sql">
        <level value="debug" />
    </logger>
    <logger name="org.apache.ibatis">
        <level value="info" />
    </logger>
    <root>
        <level value="debug" />
        <appender-ref ref="STDOUT" />
    </root>
</log4j:configuration>

1.8 目录结构

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/913461.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mall :sa-token项目源码解析

文章目录 一、mall开源项目1.1 来源1.2 项目转移1.3 项目克隆 二、Sa-Toekn框架2.1 Sa-Token 简介2.2 分布式后端项目的使用流程2.3 分布式后端项目的使用场景 三、源码解析3.1 集成与配置3.1.1 导入依赖3.1.2 添加配置3.1.3 异常处理3.1.4 存储用户信息 3.2 登录认证3.2.1 配置…

智慧健康杂志智慧健康杂志社智慧健康编辑部2023年第15期目录

智慧医疗 医疗信息化 提高病案首页填写质量&#xff0c;体现病案信息利用价值 张明芳; 1-4 经支气管镜检查联合针吸活检术在肺癌诊断中的临床应用价值 邱洪亮; 5-8 高频超声对距腓前韧带损伤的诊断价值 梁劲松;叶绮婷;曹肖维; 9-12《智慧健康》投稿邮箱&#xff1a…

clickhouse(十四、分布式DDL阻塞及同步阻塞问题)

文章目录 一、分布式ddl 阻塞、超时现象验证方法解决方案 二、副本同步阻塞现象验证解决方案 一、分布式ddl 阻塞、超时 现象 在clickhouse 集群的操作中&#xff0c;如果同时执行一些重量级变更语句&#xff0c;往往会引起阻塞。 一般是由于节点堆积过多耗时的ddl。然后抛出…

第9章:聚类

聚类任务 性能度量 距离度量 非度量距离 原型聚类 有很好的统计学上的意义&#xff0c;但是只能找到椭球形的聚类。 密度聚类 层次聚类

vue插入重复的html内容

vue添加重复的html内容是通过绑定一个数组来v-for循环实现的。 效果展示&#xff1a; 首先创建数组&#xff0c;里面为重复内容的数量&#xff0c;里面默认存在一个初始值。 然后通过v-for来绑定这个数组&#xff0c;循环数据。 通过添加点击事件&#xff0c;来增加或删除数组…

非常好用的Python单行代码详解

概要 有用的 Python 单行代码片段&#xff0c;只需一行代码即可解决特定编码问题&#xff01;在本文中&#xff0c;将分享20 个 Python 一行代码&#xff0c;你可以在 30 秒或更短的时间内轻松学习它们。这种单行代码将节省你的时间&#xff0c;并使你的代码看起来更干净且易于…

docker之Consul环境的部署

目录 一、Docker consul的介绍 1.1 template模板(更新) 1.2 registrator&#xff08;自动发现&#xff09; 1.3 agent(代理) 二.consul的工作原理 三.Consul的特性 四.Consul的使用场景 五.搭建Consul的集群 5.1 需求 5.2 部署consul 5.3 主服务器部署[192.168.19.10…

神仙般的css动画参考网址,使用animate.css

Animate.css | A cross-browser library of CSS animations.Animate.css is a library of ready-to-use, cross-browser animations for you to use in your projects. Great for emphasis, home pages, sliders, and attention-guiding hints.https://animate.style/这里面有很…

4、Spring_IOC注解开发

IOC 注解开发 版本了解 2.0版本时开始支持注解开发&#xff08;2.0之前就是昨天学习的纯 xml 操作&#xff09;2.5版本才完善3.0版本支持纯注解开发 1.注解&xml配置Bean 1.1配置用户mapper 配置 mapper public interface UserMapper {void save(); }配置 mapper 实现类…

第 6 章 递归(2)(迷宫问题)

6.6.1 迷宫问题 6.6.2 代码实现 package pers.th.d6_recursion;/*** 递归-迷宫问题*/ public class MiGong {public static void main(String[] args) {//先创建一个二维数组&#xff0c;模拟迷宫//地图int[][] map new int[8][7];//使用1 表示墙//上下全部置为1for (int i …

MySQL数据库:内置函数

日期函数 规定&#xff1a;日期&#xff1a;年月日 时间&#xff1a;时分秒 函数名称作用描述current_date()当前日期current_time()当前时间current_timestamp()当前时间戳date(datetime)返回datetime参数的日期部分date_add(date,interval d_value_type)在date中添加…

畜牧兽医虚拟仿真|病禽解剖VR模拟操作演练系统

在生物学课程中&#xff0c;动物解剖是一个重要的组成部分&#xff0c;它能够帮助学生了解动物的生理结构、功能和生活习性&#xff0c;从而更好地认识和保护自然界的生物多样性。然而&#xff0c;传统的动物解剖教学方法往往局限于课堂教学和实验室实践&#xff0c;学生很难真…

基于MATLAB开发AUTOSAR软件应用层Code mapping专题-part 4 Data store标签页介绍

这篇文章我们继续讲解code-mapping的Data stores页,这个页的内容对应的SIMULINK中的模块是Data store memory。 我们首先在模型中创建一个Data store memory模块,如图: Data store memory模块的作用相当于一个全局变量,我们可以在模型的功能逻辑里将一个信号存进去,在另…

【计算机网络篇】TCP协议

✅作者简介&#xff1a;大家好&#xff0c;我是小杨 &#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; TCP协议 1&#xff0c;TCP 简介 TCP&#xff08;Transmission Control Protocol&#xff09;是…

Linux系统使用service设置程序自启动

Linux系统使用service设置程序自启动 整体描述前期准备1. 生成pid文件 具体方法1. 脚本编写1.1 start.sh脚本1.2 shutdown.sh脚本1.3 restart.sh脚本 2. 设置service2.1 service文件2.2 设置自启动2.3 查看设置结果 整体描述 在linux系统里&#xff0c;设置程序自启动是基本操…

基于Vue3.0的优秀低代码项目

在众多开发技术中&#xff0c;Vue组件化开发技术以其卓越的灵活性和高效性备受瞩目。借助Vue3.0的强大功能和简洁易用的语法&#xff0c;你将能够轻松打造出最令人瞩目的低代码项目。 低代码开发正成为当前企业提升运营效率、降低开发成本的首选方案。相较于传统开发模式&#…

基于Singularity 安装 AmpliconSuite-pipeline

基于Singularity 安装 AmpliconSuite-pipeline 按照AmpliconSuite-pipeline官网的Singularity安装方法遇到不少问题&#xff0c;好在都一一解决了&#xff0c;写个文档记录一下我基于Singularity 安装 AmpliconSuite-pipeline的过程。 step1 获取 Singularity镜像 镜像地址&…

如何截掉图片中的一部分?

如何截掉图片中的一部分&#xff1f;在社交媒体的热潮下&#xff0c;我们常常需要将自己生活中的照片或者美景图片分享到互联网或者自己的朋友圈中。然而&#xff0c;有时候我们会发现照片中存在一些不需要的元素&#xff0c;这可能会降低照片的美观程度。针对这种情况&#xf…

分布式核心知识以及常见微服务框架

分布式中的远程调用 在微服务架构中&#xff0c;通常存在多个服务之间的远程调用的需求。远程调用通常包含两个部分&#xff1a;序列化和通信协议。常见的序列化协议包括json、xml、 hession、 protobuf、thrift、text、 bytes等&#xff0c;目前主流的远程调用技术有基于HTTP…

C语言刷题训练DAY.10

1.空心正方形图案 解题思路&#xff1a; 这里我们只把四条边的内容打印成*&#xff0c;其他内容打印成空格即可。 解题代码&#xff1a; #include <stdio.h> int main() {int n 0;while (scanf("%d", &n) ! EOF){int i 0;for (i 0; i < n; i) //外…