2019-05-06 10:31

@年轻人 大致如下:
// 创建一个自己实现的 writer
Writer writer = new MyWriter();

// 将创建好的 writer 放入一个 static 变量,便于随时获取
WriterKit.set(writer);

// 切换 writer
ActionReporter.setWriter(writer);

// 随时获取
Writer writer = WriterKit.get();

2019-05-06 10:00

@qyq1103 tomcat 部署不会理会 mainconfig 中的 main 方法,而是通过 web.xml 中配置的 JFinalFilter 入口启动的

2019-05-06 09:33

在 jfinal 这端,较新的版本不会出现文件名乱码问题

很可能是你的 tomcat 或者 linux 配置问题

2019-05-06 09:32

要看你部署时用的什么 server,如果是 tomcat 参考:
https://www.jfinal.com/doc/1-7

如果是 jfinal undertow 参考:
https://www.jfinal.com/doc/1-3

开发部署都建议使用 jfinal-undertow,实现一体化

2019-05-04 10:49

如果是响应 json 就 renderJson()
如果是响应 xml 就 renderXml(...)
如果是响应 html 就 render(...)

2019-05-03 15:31

配置 undertow.hotSwapClassPrefix=com.hope.

有两种配置方式,具体看一下文档

2019-05-02 19:49

@Sohnny 放长假才好写大功能,上大创新,时间片比较长,可以深度思考

2019-05-02 19:48

此外,如果觉得 config 中配置只是代码多,但仍然可以接受的话,可以做个类似于 MappingKit.java ,将这部分配置独立到一个单独的 java 类中去,这样 config 中的代码就很清爽了

即便是 spring,一样也要有这种机制,例如用注解 或者是 XML,总要有这么个事存在

2019-05-02 19:47

@hb963724769 这种注入方式主要是为了省代码,以及可以通过配置来改变被注入的实现类

如果 service 很多,可以将配置放在外部配置文件中,然后用一个 for 循环去加载,类似于:
for ( String c : mappings) {
String[] array = c.splite("|");
AopManager.me().addMapping(Class.forName(array[0]), Class.forName(array[1]));
}

如果觉得配置文件还是麻烦,可以写一个扫描工具类,扫描所有实现类再动态 mapping,办法总比问题多

2019-05-02 16:25

两种办法任选其一:
1:配置一下接口到实现类的映射
AopManager.me().addMapping(IService, ServiceImpl.class);

2:在 @Inject 注解中指定实现类
@Inject(ServiceImpl.class)
private IService service;

建议使用第一种方式,一次映射随处可用。而且也方便通过改变映射来改变实现类

2019-05-01 11:17

@Sohnny 这就奇怪了,我用着挺好,你仔细排查一下

2019-05-01 11:16

数据库连不上而已,一是将配置改对,二是确保当前账户可以连接该数据库

注意:mysql 数据库在本机连接与另一台机器连接时,权限是有区别的,相当于:
你用某个账户 AAA 在数据库同一台机器上能连上,换成别的机器用账户 AAA 去连的时候就连不上,这个很正常,需要配置权限

2019-05-01 11:15

Db.select().from("users").orderBy(field("id").desc()).fetch()
上面这种写法不如纯 sql 简洁:
Db.find("select * from users order by id desc");

从代码量上来说纯 sql 是最省的,而且 sql 还可以交给外部文件进行管理与优化:
https://www.jfinal.com/doc/5-13

此外,复杂 sql 是极端灵活的,可以一直嵌套下去,而 java 代码模式写不出需求复杂的查询来

然后, java 代码模式属于新创的东西,会增加学习成本,即便学会了使用 java 代码模式,仍然还要学会 sql,等于是多了一部分学习成本

最后,纯 sql 效率是最高的,也不会出现 java 模式带来的生成 sql 时的可能错误

仔细深想一下,java 代码模式除了能在写代码的时候带来一点点心理上的安全感以外,并没有带来实质的好处

sql 是很重要的基本功,是一定要过这一关的,通行各种数据库

2019-04-30 18:19

@杜福忠 这种用法,适合十分灵活的应用,eova 这个项目极其动态化,全程 Db + Record,连 Model 都没使用

感谢分享