- 请先浏览一下其他文档,对NB有起码的了解,尤其是项目结构
- 原项目需要是maven项目, 否则需要先转为maven项目的结构
- NutzBoot默认不带jsp支持, 若需要jsp支持, 容器必须选jetty
地址: https://get.nutz.io 需要选中的项目: Nutz.Mvc,Jetty
其他starter暂时不要选,在改造过程中逐渐添加!!!
将下载得到的压缩包解压到一个目录下,得到
- src
- main
- java
....
pom.xml
模板项目提供了标准化的pom.xml和基础MainLauncher类,可以少掉坑
除了javax.servlet-api, 或者servlet-api, 因为nutzboot默认已经提供,所以不需要添加,否则无法启动
- 将原项目中的src目录直接拷贝过来
- 把src/main/webapp 移动到 src/main/resources/webapp/
确保编译能通过就行,暂时还不能启动
把MainLauncher类, 移动到MainModule所在的package, 并修改main方法的内容为
new NbApp(MainModule.class).setArgs(args).setPrintProcDoc(true).run();
并修改pom.xml里面MainLauncher的package
注意 确保MainModule在顶层package, 例如
// 错误示例
net.wendal.pdf2xxx.main.MainModule
net.wendal.pdf2xxx.module.MainModule
// 正确位置
net.wendal.pdfxx.MainModule
如果由于某些特殊的原因,不能移动MainModule,那么修改main方法为
NbApp nb = new NbApp(MainModule.class).setArgs(args).setPrintProcDoc(true);
nb.getAppContext().setMainPackage("net.wendal.pdfxx");
nb.run();
将web.xml中关于NutFilter的声明移除
通常情况下, 其@IocBy是这样子的, 请务必先格式化成下面的样子,一行一个参数
@IocBy(args = {
"*js",
"ioc/",
"*anno",
"net.wendal.nutzbook.web",
"*quartz", // 关联Quartz
"*async", "128",
"*tx",
"*jedis",
"*slog"
})
修改为(留意需要注释的行)
@IocBy(args = {
// 默认js加载路径就是ioc,所以去掉
//"*js",
//"ioc/",
// 默认anno就是MainModule所在的package,所以去掉
//"*anno",
//"net.wendal.nutzbook.web",
"*quartz", // 关联Quartz
// 已默认配置, 线程池大小可以通过配置文件修改
//"*async", "128",
// 已默认配置
//"*tx",
"*jedis",
"*slog"
})
提醒: 例如quartz和jedis,添加相应的starter后, iocby里面的行就可以注释掉了
- 通常来说,原项目会有dao.js或dao.json或者db.js, 里面有conf对象,我们需要将它的定义删除
- 如果项目的ioc js文件不在
src/main/resources/ioc/
, 那么将它们移动过去
右键MainLauncher, 启动之
Q: NoSuchMethod .... setMainModule A: 原项目引用了老版本的nutz, 在pom.xml中添加下面配置
<dependency>
<groupId>org.nutz</groupId>
<artifactId>nutz</artifactId>
</dependency>
命令行下
mvn clean package
在target目录下会生成一个
- 添加nutzboot-starter-nutz-dao依赖后, 删除dao.js/dao.json
- 添加nutzboot-starter-redis依赖后,删除@IocBy中的
*jedis
- 添加nutzboot-starter-quartz依赖后, 删除@IocBy中的
*quartz
,且MainSetup中的初始化quartz代码可以删除
请查阅nutzboot-demo目录下的各种demo