展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > ssm改造spring boot项目的方法是什么

ssm改造spring boot项目的方法是什么

添加依赖如果是普通Maven项目,需要手动添加。jarorg.springframework.bootspring-boot-starter-parent2.3.3.RELEASEorg.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-testtestorg.projectlomboklombokprovided添加启动类如果是普通Maven项目,需要手动添加。@SpringBoo

本文目录

    添加依赖

    如果是普通 Maven 项目,需要手动添加。

    
    jar
    
    
    
        org.springframework.boot
        spring-boot-starter-parent
        2.3.3.RELEASE
    
    
    
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
        
            org.projectlombok
            lombok
            provided
        
    

    添加启动类

    如果是普通 Maven 项目,需要手动添加。

    @SpringBootApplication
    public class xxxApplication {
        public static void main(String[] args) {
            SpringApplication.run(xxxApplication.class, args);
        }
    }

    拷贝项目代码

    • 把 src\main\java 中的 java 代码全部拷贝到新项目中的 src\main\java 里面。

    • 把 src\main\resources 中存放 mapper.xml 的目录也拷贝到新项目中的 src\main\resources 里面。

    下面步骤用什么拷贝什么

    配置数据库连接池

    添加依赖

    
    
        mysql
        mysql-connector-java
        runtime
    

    还需要jdbc依赖(事务)

    连接池的自动配置方式

    application.properties

    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql:///数据库库名?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8
    spring.datasource.username=root
    spring.datasource.password=admin

    此时运行测试获取的数据库连接池对象可以执行成功,并且我们看到了使用的连接池是 Hikari,全称是 Hikaricp。

    其实,在 Spring Boot 2.0 之后,采用的默认连接池就是 Hikari,号称“史上最快的连接池”,所以我们没有添加依赖也能直接用,Spring Boot 的自动配置中含有 DataSourceAutoConfiguration 配置类,会先检查容器中是否已经有连接池对象,没有则会使用默认的连接池,并根据特定的属性来自动配置连接池对象,用到的属性值来源于DataSourceProperties 对象。

    配置 Druid 连接池

    当然如果我们在项目中还是想要使用 Druid 作为连接池也是可以的。只需要添加依赖即可,此时加的是 Druid 的 druid-spring-boot-starter 自动配置包, 里面包含了 DruidDataSourceAutoConfigure 自动配置类,会自动创建 Druid 的连接池对象,所以 Spring Boot 发现已经有连接池对象了,则不会再使用 Hikari。

    
    
        com.alibaba
        druid-spring-boot-starter
        1.1.21
    

    注意:如果添加的依赖是以前那种普通包,只有 Druid 自身的依赖,并不是自动配置包,则需要进行以下配置:

    
        com.alibaba
        druid
        1.1.19
    

    在配置文件中添加参数

    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

    所以一般如果已经提供了 Spring Boot 相关的自动配置包,直接使用自动配置的会更方便些。

    对于 Hikari 以及 Druid 两款都是开源产品,阿里的 Druid 有中文的开源社区,交流起来更加方便,并且经过阿里多个系统的实验,也是非常的稳定,而 Hikari 是 Spring Boot 2.0 默认的连接池,全世界使用范围也非常广,对于大部分业务来说,使用哪一款都是差不多的,毕竟性能瓶颈一般都不在连接池。

    集成 MyBatis

    添加依赖

    
    
        org.mybatis.spring.boot
        mybatis-spring-boot-starter
        1.3.1
    

    配置 Mapper 对象

    扫描 Mapper 接口只要在任意配置类上贴个注解 @MapperScan 并指定扫描的包路径即可。

    @SpringBootApplication
    @MapperScan("cn.xxx.mapper")
    public class SsmApplication {
        public static void main(String[] args) {
            SpringApplication.run(SsmApplication.class, args);
        }
    }

    MyBatis配置属性

    在 application.properties 配置以前在 XML 配置了的那些 MyBatis 的属性,属性前缀 mybatis。

    # 配置别名
    mybatis.type-aliases-package=cn.xxx.domain
    
    # 打印 SQL 日志
    logging.level.cn.xxx.mapper=trace

    事务管理

    添加依赖

    
    
        org.springframework.boot
        spring-boot-starter-jdbc
    

    注解方式

    直接在业务层实现类上或者其方法上直接贴 @Transactional 注解即可。

    Spring Boot 自动配置中提供了 TransactionAutoConfiguration 事务注解自动配置类,引入了事务的依赖后,可直接使用 @Transactional 注解。

    配置切换代理

    Spring Boot 默认优先选择 CGLIB 代理,如果需要改为优先使用 JDK 代理,需要做以下配置:

    spring.aop.proxy-target-class=false

    测试验证

    在测试类上添加方法,打印业务对象看下其真实类型。

    @Test
    public void testSave() {
        System.out.println(departmentService.getClass());
    }

    集成 Web

    添加依赖

    
    
        org.springframework.boot
        spring-boot-starter-web
    

    修改端口

    在 application.properties 配置,如下:

    server.port=80

    目录结构

    拷贝静态资源及模板文件

    ssm改造spring boot项目的方法是什么

    静态资源的一些处理

    • 默认情况下,Spring Boot 会从 classpath 下的 /static,/public,/resources,/META-INF/resources 下加载静态资源。

    • 可以在 application.properties 中配置 spring.resources.staticLocations 属性来修改静态资源的默认加载地址。

    • 因为应用是打成 jar 包,所以之前的 src/main/webapp 就作废了,如果有文件上传,那么就的必须去配置图片保存的路径,因为图片不能存在jar包中,之前war包方式才可以。

    # 告诉 Spring Boot 必须要以怎样的路径开头才能访问到静态资源,这样做是为了后期如果需要拦截,拦截器可以统一排除掉这些以这个开头的访问
    spring.mvc.static-path-pattern=/static/**

    前端控制器映射路径配置

    在 Spring Boot 自动配置中,WebMvcAutoConfiguration 自动配置类导入了 DispatcherServletAutoConfiguration 配置对象,会自动创建 DispatcherServlet 前端控制器,默认的映射路径是 /,Spring Boot 多数用于前后端分离和微服务开发,默认支持 RESTFul 风格,所以一般都是使用默认的即可,不做改动。

    # 在匹配模式时是否使用后缀模式匹配(严格匹配后缀)一般前后端分离做严格区分时配置
    spring.mvc.pathmatch.use-suffix-pattern=true

    集成 Thymeleaf

    添加依赖

    
    
        org.springframework.boot
        spring-boot-starter-thymeleaf
    

    相关配置

    # Thymelea 模板配置
    spring.thymeleaf.prefix=classpath:/templates/
    spring.thymeleaf.suffix=.html 
    spring.thymeleaf.mode=HTML
    spring.thymeleaf.encoding=UTF-8
    # 上面几个配置都是默认值不需要配置
    
    # 热部署文件,页面不产生缓存,及时更新(开发时禁用缓存)
    spring.thymeleaf.cache=false

    修改模板文件

    使用 Thymeleaf 的语法替换之前 JSP 中的 EL 表达式和 JSTL。

    统一异常处理

    框架自带方式

    Spring Boot 默认情况下,会把所有错误都交给 BasicErrorController 类完成处理,错误的视图我们放到 classpath:/static/error/ 和 classpath:/templates/error/ 路径上,HTTP 错误状态码就是默认视图的名称。如:

    • 出现 404 错误 -> classpath:/static/error/404.html

    • 出现 5xx 错误 -> classpath:/static/error/5xx.html (因为 5xx 错误是后台错误, 原因很多种, 有时有需求需要根据原因不一样响应不同的内容, 甚至响应数据格式都不一样,所以我们一般都用统一异常处理,然后再根据错误原因把对应内容放到页面上)

    控制器增强器方式

    自己定义一个控制器增强器,专门用于统一异常处理,该方式一般用于处理 5xx 类错误。

    @ControllerAdvice 
    // 控制器消息,这个注解为了spring帮我们创建对象
    public class ExceptionControllerAdvice {
        @ExceptionHandler(RuntimeException.class) // 处理什么类型的异常
        //返回值形式也可以自定义,可以返回modelAndView,
        public String handlException(RuntimeException e, Model model,HandlerMethod m) {
        	//HandlerMethod这个对象存放了spring对控制器的方法和控制器对象
        	//将错误信息存入到model中
            e.printStackTrace(); // 记得这行代码保留,不然项目后台出异常,开发工具控制台看不到错误信息
            return "errorView"; // 指定错误页面视图名称,然后在页面从model对象中拿到错误信息
        }
    }

    添加注册多个拦截器

    定义一个配置类,实现 WebMvcConfigurer 接口,在 addInterceptors 方法注册拦截器。

    @Configuration
    public class MvcJavaConfig implements WebMvcConfigurer {
    
        @Autowired
        private LoginInterceptor loginInterceptor;
        //拦截器类实现HandlerInterceptor
    
        @Autowired
        private PermissionInterceptor permissionInterceptor;
        //拦截器类实现HandlerInterceptor
    
        public void addInterceptors(InterceptorRegistry registry) {
            // 注册登录拦截器
            registry.addInterceptor(loginInterceptor)
                // 对哪些资源起过滤作用
                .addPathPatterns("/**")
                // 对哪些资源起排除作用
                .excludePathPatterns("/login", "/static/**");//多个路径
                
    		//多个拦截器
            // 注册权限拦截器
            registry.addInterceptor(permissionInterceptor)
                // 对哪些资源起过滤作用
                .addPathPatterns("/**")
                // 对哪些资源起排除作用
                .excludePathPatterns("/login", "/static/**");
        }
    }

    系统日志

    为什么要用日志

    • 比起 System.out.println,日志框架更为灵活,可以把日志的输出和代码分离。

    • 日志框架可以方便的定义日志的输出环境,控制台,文件,数据库。

    • 日志框架可以方便的定义日志的输出格式和输出级别。

    Spring Boot 中的日志介绍

    • Spring Boot 默认已经开启日志,其默认的日志格式为:时间 日志级别 线程ID 线程名称 日志类 日志说明。

    • Spring Boot 的日志分为:系统日志和应用日志。

    • 日志级别,级别越高,输出的内容越少,如果设置的级别为 info,则 debug 以及 trace 级别的都无法显示,日志级别由低到高 trace < debug < info < warn < error。

    • Spring Boot 默认选择 Logback 作为日志框架,也能选择其他日志框架,但是没有必要。

    ssm改造spring boot项目的方法是什么

    由于slf4j是后来出现的日志标准,目的是统一之前很多日志框架的使用方式,对主流的日志框架主动的实现了这个标准,实际就是调用各日志框架的api

    输出日志

    在我们自定义的类中可以使用日志框架来输出。

    方式一

    在类中注入一个静态 Logger 对象,传入当前类的作用是方便输出日志时可以清晰地看到该日志信息是属于哪个类的。

    private static final Logger log = LoggerFactory.getLogger(当前类.class);
    方式二

    使用 Lombok 提供的 @Slf4j 注解来简化代码,其实和方式一的作用是一样的。

    @Slf4j
    @Service
    public class PermissionServiceImpl implements IPermissionService {}

    在需要输出日志的地方使用日志的输出方法

    log.info(...);
    log.error(...);
    ...
    // 输出日志中有变量可以使用 {} 作为占位符
    log.info("删除id为{}的数据", id);

    日志级别

    日志级别由低到高 trace < debug < info < warn < error。

    log.debug("权限插入成功:{}",expression);
    log.info("权限插入成功:{}",expression);
    log.warn("权限插入成功:{}",expression);

    执行权限加载功能后,发现控制台出现 info 与 warn 的信息,debug 的没有显示,原因是因为 Spring Boot 默认的日志级别是 info,所以 debug 低于 info 级别,就不会显示出来了。

    ssm改造spring boot项目的方法是什么

    若要修改日志显示级别,最快速的方式是在 application.properties 配置,配置如下

    # 把日志级别修改为 debug,不过我们一般不会更改,除非要调试找 bug,不然控制台显示的内容太多也容易乱,下面为全局配置,单路径配置如打印 SQL 日志 logging.level.cn.xxx.mapper=trace
    logging.level.root=debug

    Logback 配置文件,日志存入文件中

    Logback 框架默认会自动加载 classpath:logback.xml,作为框架的配置文件,在 Spring Boot项目中使用时,还会额外的支持自动加载classpath:logback-spring.xml,在 Spring Boot 项目中推荐使用 logback-spring.xml,功能更强大些。

    
    
    
        
        ${appName}
        
        
        
            
                %d{yyyy-MM-dd-HH:mm:ss} %level [%thread]-%logger{35} >> %msg %n
         
       
        
        
        
            
                %-4relative [%thread] %level %logger{35} - %msg %n
           
            true 
            MyLog.log 
       
        
        
        
       
             
        
        
        
    

    参考日志格式:

    • %d{yyyy-MM-dd-HH:mm:ss} %level [%thread]-%class:%line >> %msg %n

    格式中的标识符组成:

    • %logger{n}:输出 Logger 对象类名,n 代表长度

    • %class{n}:输出所在类名

    • %d{pattern} 或者 date{pattern}:输出日志日期,格式同 Java

    • %L/line:日志所在行号

    • %m/msg:日志内容

    • %method:所在方法名称

    • %p/level:日志级别

    • %thread:所在线程名称

    一般开发过程,日志记录到控制台

    实际上线了, 日志一般记录到文件中

    其他功能

    修改spring boot启动打印画面

    Spring Boot 提供了一些扩展点,比如修改 banner:在 resources 根目录中放入 banner.txt 文件,替换默认的启动spring打印的字样。

    # application.properties
    # 关闭 banner
    spring.main.banner-mode=off

    热部署插件

    除了使用 JRebel 插件(收费)来实现热部署,还可以使用 Spring Boot 提供的 spring-boot-devtools 包来完成 Springboot 应用热部署,从而实现更改方法内代码和模板文件不需要重启,只需要点击编译即可。

    
    
        org.springframework.boot
        spring-boot-devtools
    

    Spring Boot 重启是 reload 重启,通过监控 classpath 的变化,如果 classpath 中的文件发生变化,即触发重启。Spring Boot 通过两个 classpath 来完成 reload,一个 basic classloader 中加载不变的类(jar 包中的类),一个 restart classloader 中加载 classpath 中的类(自己写的类),重启的时候,restart classloader 中的类丢弃并重新加载。

    下面是相关的一些配置,一般不用配置

    # 默认排除不需要更新的资源
    spring.devtools.restart.exclude=static/**,templates/**,public/**       
    
    # 增加额外的排除资源
    # 处理默认配置排除之外的
    spring.devtools.restart.additional-exclude=public/** 
    
    # 禁用自动重启
    spring.devtools.restart.enabled=false

    切换运行环境

    在实际开发中,一个系统是有多套运行环境的,如开发时有开发的环境,测试时有测试的环境,不同的环境中,系统的参数设置是不同的,如:连接开发数据和测试数据库的 URL 绝对是不同的,那么怎么快速的切换系统运行的环境呢?我们需要为不同的环境创建不同的配置文件,如下:

    # application-dev.properties
    server.port=8081
    # application-test.properties
    server.port=8082

    最后我们在 application.properties 中指定需要使用的环境即可

    # 在 application.properties 中指定需要使用的环境即可
    spring.profiles.active=dev

    在命令行模式下启动也可以激活: java -jar xxx --spring.profiles.active=dev

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Postman macOS版
    Postman macOS版

    Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。

    Docker Desktop macOS版
    Docker Desktop macOS版

    Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。

    Android Studio macOS版
    Android Studio macOS版

    Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。

    Xcode macOS版
    Xcode macOS版

    Xcode 是苹果面向 Mac 提供的官方集成开发环境,将代码编辑、项目构建、SwiftUI 实时预览、设备模拟、自动化测试、断点调试、性能分析和应用分发整合在同一套工作流中,适合开发与维护 iPhone、iPad、Mac、Apple Wa

    JetBrains WebStorm macOS版
    JetBrains WebStorm macOS版

    JetBrains WebStorm 是面向 JavaScript、TypeScript 和现代 Web 技术的专业集成开发环境,可智能理解项目结构,提供代码补全、重构、错误检查、运行调试、测试及 Git 工具。

    PhpStorm macOS版
    PhpStorm macOS版

    PhpStorm 是 JetBrains 推出的专业 PHP 集成开发环境,可在 Mac 上完成代码编写、智能检查、重构、调试、测试和数据库管理。它支持主流 PHP 框架、Composer、Git、Docker 与远程解释器。

    JetBrains PyCharm macOS版
    JetBrains PyCharm macOS版

    JetBrains PyCharm 是面向 Python 开发者的集成开发环境,提供智能补全、代码检查、重构、调试、测试、版本控制及虚拟环境管理功能。Mac 版兼容 Intel 与 Apple 芯片,核心功能可免费使用。

    JetBrains IntelliJ IDEA macOS版
    JetBrains IntelliJ IDEA macOS版

    IntelliJ IDEA 是 JetBrains 推出的专业集成开发环境,重点服务于 Java、Kotlin 与 JVM 项目开发。软件集成代码补全、静态检查、重构、调试、测试、版本控制及构建工具,并可借助插件扩展语言和框架支持。

    Visual Studio Code macOS版
    Visual Studio Code macOS版

    Visual Studio Code 是微软提供的免费代码编辑器,支持 macOS,并为 Intel 与 Apple 芯片 Mac 提供适配版本。软件集代码编辑、调试、Git 源代码管理、集成终端和扩展市场于一体。

    REAPER macOS版
    REAPER macOS版

    REAPER是Cockos开发的数字音频工作站,提供多轨音频与MIDI录制、剪辑、处理、混音和母带制作工具。Mac版兼容Intel与Apple芯片,支持AU、VST、VST3、CLAP等插件格式,并提供高度可定制的工作流程。

    Adobe Audition macOS版
    Adobe Audition macOS版

    Adobe Audition 是面向播客、影视后期、音乐制作及内容创作者的专业音频工作站,提供波形精修、多轨录制与混音、频谱编辑、降噪修复、响度匹配和效果处理工具,并可与 Adobe Premiere 协同完成视频声音制作。

    Pro Tools macOS版
    Pro Tools macOS版

    Pro Tools 是 Avid 推出的专业数字音频工作站,覆盖多轨录音、无损剪辑、MIDI 编曲、插件处理、自动化混音及声音与画面同步等工作。它拥有 Intro、Artist、Studio 和 Ultimate 等方案。

    WINDOWS 更多
    PixPix 网页版
    PixPix 网页版

    PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。

    Postman Windows版
    Postman Windows版

    Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等

    Docker Desktop Windows版
    Docker Desktop Windows版

    Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。

    Android Studio Windows版
    Android Studio Windows版

    Android Studio 是 Google 面向 Android 应用开发提供的官方集成开发环境,以 IntelliJ IDEA 为基础,集成智能代码编辑、Gradle 构建、设备模拟、界面预览、调试测试及性能分析工具,

    JetBrains WebStorm Windows版
    JetBrains WebStorm Windows版

    WebStorm 是 JetBrains 面向 JavaScript、TypeScript 和现代 Web 技术打造的集成开发环境。它提供项目级代码分析、智能补全、安全重构、导航搜索,并集成调试、测试、终端、Git 与常用前端工具,

    JetBrains PhpStorm Windows版
    JetBrains PhpStorm Windows版

    PhpStorm 是 JetBrains 面向 PHP 与现代 Web 开发打造的专业集成开发环境,提供代码补全、静态检查、重构、调试、测试、数据库、版本控制及前端语言支持。Windows 用户可直接下载安装程序,

    JetBrains PyCharm Windows版
    JetBrains PyCharm Windows版

    PyCharm 是 JetBrains 推出的 Python 集成开发环境,提供智能代码补全、错误检查、重构、调试、测试、Git、终端及 Jupyter Notebook 支持。统一版安装后可体验 30 天 Pro 功能,

    JetBrains IntelliJ IDEA Windows版
    JetBrains IntelliJ IDEA Windows版

    JetBrains IntelliJ IDEA 是以 Java、Kotlin 和 JVM 项目为核心的专业集成开发环境,提供智能补全、代码检查、安全重构、调试、测试、版本控制及构建工具集成。统一发行版的核心功能可免费用于商业和非商业项目,

    Visual Studio Code Windows版
    Visual Studio Code Windows版

    Visual Studio Code 是微软推出的免费代码编辑器,Windows 版集成智能补全、代码导航、调试、终端和版本控制,并可通过扩展添加语言、格式化及远程开发能力。它启动较快、配置灵活,

    REAPER Windows版
    REAPER Windows版

    REAPER 是 Cockos 推出的数字音频工作站,适用于录音、MIDI 编曲、音频编辑、混音、母带制作及声音设计。软件安装包小巧,支持多轨录制、灵活路由、自动化、第三方插件和脚本扩展,并提供完整功能的 60 天免费评估期。

    Adobe Audition Windows版
    Adobe Audition Windows版

    Adobe Audition 是面向播客、影视后期、广播与音乐制作的专业音频工作站,提供波形编辑、多轨混音、频谱分析、录音、降噪修复和效果处理等功能。Windows 版通过 Adobe Creative Cloud 安装和管理,

    Pro Tools Windows版
    Pro Tools Windows版

    Pro Tools 是 Avid 推出的专业数字音频工作站,提供多轨录音、音频剪辑、MIDI编曲、插件处理、自动化混音及影视声音制作能力。它适合音乐人、录音师、制作人和音频后期团队使用,并提供免费入门版、订阅方案及永久授权选择。