首页/新闻资讯/正文详情

SpringBoot项目整合jetbrick-template

发布时间:2026/11/13 13:15:48 来源:云帆数科 栏目:资讯中心
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

相关推荐

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/11/13 13:15:47

CSUN 2026|Highcharts无障碍数据与AI分享
CSUN 2026|Highcharts无障碍数据与AI分享

为CSUN 2026带来了什么 今年,我们展示的演示允许用户通过人工智能辅助界面对图表中的底层数据提出直接问题。其目标不是取代传统导航,而是提供另一种探索方式。用户不再仅依赖结构化的键盘控制或预设的图表工具,而是可以通过有针对性的查询&… · 2026/11/3 3:38:36

CCS的使用、cmd文件、CCXML 文件、新建工程
CCS的使用、cmd文件、CCXML 文件、新建工程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 2:39:36

桃源县建筑电工证多久拿证 外省证能不能转过来
桃源县建筑电工证多久拿证 外省证能不能转过来

桃源县建筑电工证多久拿证 外省证能不能转过来 之前考的证在外省能不能转过来?这是很多人在考虑考取桃源县建筑电工证前最关心的问题。如果你也面临这个疑问,恭喜你,这篇文章正好为你解决这个痛点,告诉你桃源县建筑电工证多久拿证,以及如何顺利办理、转… · 2026/11/13 13:14:51

厂里电工证查询外省证怎么转 含金量到底值不值
厂里电工证查询外省证怎么转 含金量到底值不值

厂里电工证查询外省证怎么转 含金量到底值不值 之前考的证在外省能不能转过来?这几乎是所有在外地打工、换过几次工作的电工都会问的问题。特别是在洛阳涧西区这种工业集中、水利工程项目多的区域,很多电工都是从老家或外地考的证,到了新单位后才发现… · 2026/11/13 13:14:51

忠县考电工证地址在哪里?通过率揭秘来了
忠县考电工证地址在哪里?通过率揭秘来了

忠县考电工证地址在哪里?通过率揭秘来了 你是不是正愁不知道去哪报名考电工证,又怕被中介坑?现在市面上培训机构五花八门,真假难辨,很多人花了钱还没拿到证,或者拿到了也不符合要求,耽误了上岗和就业。今天就来聊聊 忠县考电工证地址… · 2026/11/13 13:14:51

滁州培训高级电工证怎么考?工地太忙根本没时间复习考试?别急,这3步就够了!
滁州培训高级电工证怎么考?工地太忙根本没时间复习考试?别急,这3步就够了!

滁州培训高级电工证怎么考?工地太忙根本没时间复习考试?别急,这3步就够了! 工地太忙根本没时间复习考试?别让时间限制了你考取 滁州培训高级电工证 的机会,这个 上岗必备… · 2026/11/13 13:14:51

24V弱电需要电工证多久拿证?外省证书能转过来吗?洛阳涧西区班组负责人实操指南
24V弱电需要电工证多久拿证?外省证书能转过来吗?洛阳涧西区班组负责人实操指南

24V弱电需要电工证多久拿证?外省证书能转过来吗?洛阳涧西区班组负责人实操指南 之前考的证在外省能不能转过来?这个问题我每天都能听到,特别是像洛阳涧西区这些劳务班组负责人,手底下干活的电工、焊工、高处作业人员多,证没办齐,项目就动不了,工期… · 2026/11/13 13:14:51

考电工证多久出结果 郑州报考避坑指南
考电工证多久出结果 郑州报考避坑指南

考电工证多久出结果 郑州报考避坑指南 你是不是也担心学历不高报不了电工证?别急,我来告诉你怎么走,不走弯路,不花冤枉钱。 考电工证多久出结果这个问题,很多人在报考前都问过,结果要么等到报名截止才发现来不及,要么交了钱又被告知不符合条件。其实… · 2026/11/13 13:13:51

电工证丢失还能补吗?千万别踩坑,丢了证等于失业
电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。… · 2026/11/12 14:09:01

电力电缆作业证直播报名入口与办理流程良心建议
电力电缆作业证直播报名入口与办理流程良心建议

电力电缆作业证直播报名入口与办理流程良心建议 你是不是也担心学历不高报不了名?别急,今天就给你讲讲 电力电缆作业证直播 的报名流程和那些你必须知道的干货, 良心建议 在这里,别错过。 电力电缆作业证直播报名需要什么条件?… · 2026/11/13 5:40:45

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑
英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑

英德电工证报考费多少钱,怕考不过白交培训费?看完这篇别再踩坑 怕考不过白交培训费?英德电工证报考费多少钱,你真的了解吗?现在市面上培训机构五花八门,价格参差不齐,很多人一不小心就花了冤枉钱,结果还考不过。别急,今天就来给你说清楚英德电工证的… · 2026/11/12 23:27:43

维修电公用考电工证吗 在哪考最靠谱
维修电公用考电工证吗 在哪考最靠谱

维修电公用考电工证吗 在哪考最靠谱 工地太忙根本没时间复习考试,你是维修电工,天天在项目上跑,连抽个空背个题都难。那问题来了—— 维修电公用考电工证吗 ?答案是: 必须考 。尤其是在当前施工行业,没有电工证,连进场都可能被拦下。而且,… · 2026/11/13 0:00:08

电工证是不是可以登高?含金量和证书范围你必须知道的事
电工证是不是可以登高?含金量和证书范围你必须知道的事

电工证是不是可以登高?含金量和证书范围你必须知道的事 证书过期了不知道怎么复审延期,这事儿很多人遇到过,尤其是像你这样在郑州金水区做劳务班组负责人,手里握着几十个工人的证书,稍微一疏忽,就可能影响工程进度和公司信誉。特别是电工证是不是可以登… · 2026/11/13 0:00:08

鸡西电工证哪家下证快官方报名入口怎么找
鸡西电工证哪家下证快官方报名入口怎么找

鸡西电工证哪家下证快官方报名入口怎么找 你是不是也担心 学历不高怕报不上名 ?别急,今天我就来跟你说说, 鸡西电工证哪家下证快 ,还有 官方报名入口 到底怎么找,别让那些“代办”“代考”耽误了你的机会。… · 2026/11/13 0:00:08

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/13 6:12:21

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/13 6:11:51

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/12 21:15:21

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码