尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
SpringBoot项目整合jetbrick-template
由于项目升级迁移一些老的ssm项目需要迁移到springboot项目其中涉及jetbrick-template的迁移整合下面记录了迁移前后项目的结构文件配置对比和迁移所需要的步骤ssm项目对比springboot项目传统SSMSpringSpringMVCMyBatis 是手动整合三大框架的经典 JavaEE 架构SpringBoot是基于 SSM 的自动配置、开箱即用的快速开发框架二者核心技术栈一致都用 Spring 全家桶但项目结构、配置文件、开发模式、部署方式却有不小差异核心定位与设计理念对比维度传统 SSM 项目SpringBoot 项目核心定位手动整合 SpringSpringMVCMyBatis纯手动配置约定大于配置自动整合 SSM简化开发、快速搭建设计理念全手动配置灵活性高但繁琐自动配置 起步依赖零 XML / 少 XML开箱即用适用场景老旧项目、需要极致自定义配置的项目新项目、微服务、快速迭代、云原生项目核心优势配置完全可控适配极特殊需求开发效率极高、无冗余配置、内置容器项目目录结构对比ssm:ssm-project/├── src/│ └── main/│ ├── java/ # 核心Java代码│ │ └── com/xxx/│ │ ├── controller/ # 控制层│ │ ├── service/ # 业务层│ │ ├── dao/ # 数据访问层│ │ ├── entity/ # 实体类│ │ └── config/ # 配置类可选大部分用XML│ ├── resources/ # 配置文件│ │ ├── spring/ # Spring核心配置XML│ │ ├── springmvc/ # SpringMVC配置XML│ │ ├── mybatis/ # MyBatis配置XML│ │ ├── jdbc.properties # 数据库连接配置│ │ └── log4j.properties # 日志配置│ └── webapp/ # WEB核心目录SSM标志性目录│ ├── WEB-INF/│ │ ├── web.xml # 核心部署描述符必须配置│ │ └── lib/ # 依赖jar包手动导入│ └── index.jsp # 页面文件└── pom.xml # 手动导入所有依赖springboot:springboot-project/├── src/│ └── main/│ ├── java/ # 核心Java代码固定包扫描规则│ │ └── com/xxx/│ │ ├── controller/ # 控制层│ │ ├── service/ # 业务层│ │ ├── mapper/ # DAO层MyBatis│ │ ├── entity/ # 实体类│ │ ├── config/ # 配置类替代XML│ │ └── SpringbootApplication.java # 启动类核心│ └── resources/ # 极简配置│ ├── application.yml/application.properties # 唯一核心配置│ ├── mapper/ # MyBatis映射文件可选│ ├── static/ # 静态资源js/css/img│ └── templates/ # 模板页面Thymeleaf等└── pom.xml # 仅导入起步依赖结构核心区别1.无 webapp 目录SpringBoot 内置 Tomcat彻底抛弃 WEB-INF/web.xml2.必须有启动类SSM 无启动类靠容器加载SpringBoot 通过main()方法启动3.静态资源目录标准化SpringBoot 固定static/templatesSSM 自定义4.包扫描自动生效SpringBoot 默认扫描启动类同级及子包SSM 需手动配置配置文件对比最核心差异传统SSM有很多XML配置SpringBoot是注解单文件配置几乎零XML。1. 配置文件数量传统 SSM最少5个XML配置文件web.xml、applicationContext.xml、spring-mvc.xml、mybatis-config.xml、jdbc.propertiesSpringBoot1 个核心配置文件application.yml / application.properties90% 场景无需额外配置2. 核心配置对比1web.xml 配置SSM 必须SpringBoot 彻底抛弃SSM 需要手动配置前端控制器、监听器、编码过滤器、资源映射SpringBoot自动配置无需一行 XML。2框架整合配置SSMXML 中手动配置数据源、SqlSessionFactory、Mapper 扫描、事务管理、MVC 视图解析器、包扫描SpringBoot自动配置导入mybatis-spring-boot-starter后自动配置数据源、SqlSession、MVC、事务只需在配置文件写数据库地址。3配置文件格式SSM纯 XML propertiesSpringBootyml推荐层级清晰/properties 注解Configuration4配置示例数据库连接SSMXMLpropertiesjdbc.propertiespropertiesjdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/test jdbc.usernameroot jdbc.password123456applicationContext.xml手动加载、手动配置数据源xmlcontext:property-placeholder locationclasspath:jdbc.properties/ bean iddataSource classcom.alibaba.druid.pool.DruidDataSource property namedriverClassName value${jdbc.driver}/ property nameurl value${jdbc.url}/ property nameusername value${jdbc.username}/ property namepassword value${jdbc.password}/ /beanSpringBoot单 yml 文件yamlspring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/test username: root password: 123456无需创建 Bean无需手动扫描框架自动完成配置依赖管理Maven对比1. 传统 SSM手动导入所有依赖Spring 核心、SpringMVC、MyBatis、整合包、数据库驱动、连接池、日志、JSON 等必须手动管理版本兼容比如 Spring5.x 搭配 MyBatis3.x版本冲突会直接报错pom.xml 冗长易漏包、错包。2. SpringBoot起步依赖starter导入一个spring-boot-starter-web自动包含 Spring、SpringMVC、Tomcat、JSON 等所有依赖自动版本仲裁父工程统一管理版本绝对无版本冲突pom.xml 极简只需导入业务相关依赖。运行与部署方式对比维度传统 SSMSpringBoot运行方式必须依赖外部 Tomcat打包成 war 包放到 webapps 下内置 Tomcat/Jetty直接运行启动类 main 方法打包格式war 包jar 包内置容器直接 java -jar 运行端口配置外部 Tomcat 的 server.xml 配置application.yml 直接写 server.port部署难度繁琐需安装配置 Tomcat极简服务器有 Java 环境即可一键运行微服务支持不支持需手动改造天然支持微服务SpringCloud注解使用对比核心注解一致但 SpringBoot简化了注解功能传统 SSMSpringBoot启动加载无靠 web.xmlSpringBootApplication(三合一)包扫描context:component-scan自动扫描无需注解配置类ConfigurationXMLConfiguration控制层ControllerController/RestController事务Transactional完全一致MyBatis 映射Mapper XML 配置Mapper/MapperScan自动配置SpringBootApplicationConfigurationComponentScanEnableAutoConfiguration核心差异速记结构SSM 有webapp/WEB-INF/web.xmlSpringBoot 无用启动类 扁平化结构配置SSM 是 XML 配置地狱SpringBoot 只用application.yml 注解依赖SSM 手动导包管版本SpringBoot 用starter 起步依赖自动管理运行SSM 依赖外部 TomcatSpringBoot 内置容器直接 jar 包运行本质SpringBoot 不是新框架是SSM 的自动化简化工具核心技术完全一致ssm项目迁移jetbrick-template到springboot项目1.添加依赖jetbrick-template没有提供spring starter适配dependency groupIdcom.github.subchen/groupId artifactIdjetbrick-template-springmvc/artifactId version2.1.8/version /dependency2.添加configuration配置类由于jetbrick-template没有提供spring starter适配不支持自动配置所以添加配置类这个类的作用是通知spring我用的是jetbrick模版帮我集成进mvc;具体实现步骤1.创建注册视图解析器让 Controller 返回字符串时知道去渲染 Jetbrick 模板2.同时还创建 JetEngine让 Spring 启动模板引擎package com.sd.managesystem.config; import jetbrick.template.web.springmvc.JetTemplateViewResolver; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.Ordered; Configuration public class JetbrickConfig { Bean public JetTemplateViewResolver jetTemplateViewResolver() { JetTemplateViewResolver resolver new JetTemplateViewResolver(); // 必须空 resolver.setPrefix(); resolver.setSuffix(); resolver.setContentType(text/html; charsetUTF-8); resolver.setOrder(Ordered.HIGHEST_PRECEDENCE); return resolver; } }3.添加配置属性文件jetbrick-template.properties放在启动类所在的模块这个属性文件相当于jetbrick引擎的说明书, 引擎怎么运行、去哪里找模板、怎么编译、怎么输出页面。#每次访问页面都重新编译模板;生产环境需配置为none compile.strategy always #使用类的静态方法时需要配置 jetx.import.classescom.sd.managesystem.* #使用jetbrick自定义标签、自定义函数、全局方法时需要配置 jetx.autoscan.packagescom.sd.managesystem jetx.trim.directive.commentstrue jetx.trim.directive.whitespacestrue jetx.trim.directive.comments.prefix!-- jetx.trim.directive.comments.suffix-- jetx.trim.leading.whitespacestrue jetx.template.suffix.html jetx.template.loaders $templates jetx.input.encodingutf-8 jetx.output.encodingutf-8 # 模板放在 classpath:/templates/ $templates jetbrick.template.loader.ClasspathResourceLoader $templates.root /templates/ # SpringBoot 开发开启热加载 $templates.reloadable true4.写html文件resource/templates/路径下写hello.html文件!DOCTYPE html html langzh-CN head meta charsetUTF-8 title${title}/title /head body h1${title}/h1 p当前时间${now}/p h3用户列表/h3 ul #for(user : users) liID${user.id} 姓名${user.name}/li liID${user.id} 姓名${User.getName()}/li #end /ul /body /html5.写controller类package com.sd.managesystem.controller; import com.sd.managesystem.vo.User; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import java.time.LocalDateTime; import java.util.Arrays; import java.util.List; Controller public class HelloController { GetMapping(/hello) public String index(Model model) { model.addAttribute(title, Spring Boot 集成 Jetbrick 成功); model.addAttribute(now, LocalDateTime.now()); ListUser userList Arrays.asList( new User(1, 张三), new User(2, 李四), new User(3, 王五) ); model.addAttribute(users, userList); return hello; } }运行代码访问http://localhost:8080/hello引入jetbrick-templatejetbrick默认只在根路径classpath:/找配置文件也就是项目的src/main/resources/如果放在了/resources/profile下则需要在application.yml配置文件中指定路径jetbrick:template:config-location: classpath:profile/jetbrick-template.properties
RELATED

相关推荐

iTerm2 实战指南:10 分钟跑通分屏、触发器与 AI 助手三件套

iTerm2 实战指南:10 分钟跑通分屏、触发器与 AI 助手三件套

iTerm2 实战指南:10 分钟跑通分屏、触发器与 AI 助手三件套 【免费下载链接】iTerm2 iTerm2 is a terminal emulator for Mac OS X that does amazing things. 项目地址: https://gitcode.com/gh_mirrors/it/iTerm2 凌晨排查线上故障,终端里错误日…

📅 2026/10/31 6:42:44
uBlock Origin:免费内容拦截器,在请求出机器之前杀掉广告

uBlock Origin:免费内容拦截器,在请求出机器之前杀掉广告

uBlock Origin:免费内容拦截器,在请求出机器之前杀掉广告 【免费下载链接】uBlock uBlock Origin - An efficient blocker for Chromium and Firefox. Fast and lean. 项目地址: https://gitcode.com/GitHub_Trending/ub/uBlock 打开新闻页&#…

📅 2026/10/31 6:42:44
可视化调试指南

可视化调试指南

核心价值与适用场景 可视化调试是嵌入式开发、硬件运维领域的提效核心手段,区别于传统对着十六进制串口数据排查问题的模式,能将硬件运行状态、指令交互逻辑、参数异常情况转化为直观的可视化界面、报错提示,大幅降低问题排查门槛。不少嵌入…

📅 2026/10/31 6:42:44
MORE NEWS

更多资讯

📰

10款免费网络安全抓包工具详解与选型指南

1. 网络安全抓包工具概述在网络安全领域,抓包工具就像网络工程师的"听诊器",能够实时监听和分析网络通信数据。这类工具通过捕获网络接口传输的数据包,帮助安全人员诊断网络问题、分析协议交互、检测安全漏洞。对于刚入门网络安全的…

📰

MySQL高可用架构实战:主主复制+HAProxy+Keepalived

1. MySQL高可用架构核心设计解析在企业级数据库应用中,单点故障是绝对不能容忍的风险。我经历过多次深夜被叫醒处理数据库宕机的惨痛教训后,彻底认识到高可用架构的重要性。本次搭建的MySQL高可用方案采用主主复制HAProxyKeepalived的组合,这…

📰

灰度放量与准入控制:GATER五段式门控框架落地实践

做灰度放量和准入控制这件事&#xff0c;我前前后后折腾了好几年。最早是在业务代码里塞if user_id % 100 < 5&#xff0c;后来是配置文件里写一堆开关&#xff0c;再后来是一堆人围着发布窗口熬夜盯监控。真正让我下决心把这件事抽象出来&#xff0c;是因为一次不太体面的线…

📰

Hive在电商大数据处理中的核心应用与优化策略

1. Hive在电商行业的核心价值解析电商行业每天产生的数据量级早已突破传统数据库的处理极限。以某头部电商平台为例&#xff0c;其单日用户行为日志就超过20TB&#xff0c;传统MySQL这类关系型数据库在这种场景下完全无能为力。这正是Hive这类大数据工具的价值所在——它不仅能…

📰

Node-RED 集成 InfluxDB v2.x 实战:写入查询闭环与生产避坑指南

简介&#xff1a;本资源是 Node-RED 生态中专用于 InfluxDB 时间序列数据库交互的官方扩展节点包&#xff08;node-red-contrib-influxdb&#xff09;&#xff0c;面向物联网开发、工业数据采集及边缘计算场景下的中级以上开发者&#xff0c;解决在低代码流式编程环境中高效写入…

📰

如何准确获取真实屏幕分辨率:跨平台实战指南

1. 项目概述&#xff1a;为什么“屏幕分辨率”突然成了2020年的生活刚需&#xff1f;2020年那会儿&#xff0c;我帮三个不同行业的客户做远程协作系统适配&#xff0c;结果全卡在同一个地方——不是网络延迟&#xff0c;不是软件崩溃&#xff0c;而是屏幕分辨率不匹配导致的界面…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬