SoJpt BootSpring Boot 下使用 Jfinal 特性
SoJpt Boot
介绍
在Spring Boot框架下使用Jfinal特性极速开发 了解更多:www.sojpt.com
在Spring Boot框架下使用Jfinal特性极速开发,可以在Spring Boot中向使用Jfinal一样使用Enjoy、Aop、Controller等一系列方法(如: getFile(), renderFile....),以及ActiveRecord
软件架构
基于 JFinal 与 Spring Boot制作, 实现Spring Boot与Jfinal的混合双打,使Spring Boot下的开发者能够体验Jfinal的极速开发特性,有更多的时间去配恋人或家人。
安装教程
- 在Spring Boot 2.0以上项目中 加入maven坐标
<dependency> <groupId>com.gitee.sohnny</groupId> <artifactId>sojpt-boot-spring-boot-starter</artifactId> <version>2.5.6-3.8</version> </dependency>
- 添加 SoJptBootConfig 配置类
package com.sojpt.boot; import java.sql.Connection; import javax.servlet.ServletException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.alibaba.druid.filter.stat.StatFilter; import com.alibaba.druid.wall.WallFilter; import com.jfinal.config.Constants; import com.jfinal.config.Handlers; import com.jfinal.config.Interceptors; import com.jfinal.config.Plugins; import com.jfinal.core.JFinal; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.activerecord.dialect.MysqlDialect; import com.jfinal.plugin.druid.DruidPlugin; import com.jfinal.template.Engine; import com.jfinal.template.ext.spring.JFinalViewResolver; import com.jfinal.template.source.ClassPathSourceFactory; import com.sojpt.model._MappingKit; @Configuration(value = "SoJptBootConfig") public class SoJptBootConfig extends SoJptConfig { @Autowired private ActiveRecordPluginProperties arpProperties; /** * 配置JFinal常量 */ @Override public void configConstant(Constants me) { // 设置当前是否为开发模式 me.setDevMode(arpProperties.getIsDevMode()); // me.setError404View("/index.html"); } /** * 配置JFinal插件 数据库连接池 ORM 缓存等插件 自定义插件 */ @Override public void configPlugin(Plugins me) { DruidPlugin dp = new DruidPlugin(arpProperties.getJdbcUrl(), arpProperties.getUsername(), arpProperties.getPassword()); dp.addFilter(new StatFilter()); dp.setDriverClass("com.mysql.cj.jdbc.Driver"); WallFilter wall = new WallFilter(); dp.addFilter(wall); me.add(dp); ActiveRecordPlugin arp = new ActiveRecordPlugin(dp); arp.setTransactionLevel(Connection.TRANSACTION_READ_COMMITTED); arp.setShowSql(arpProperties.getIsDevMode()); arp.setDialect(new MysqlDialect()); // ******** 在此添加dao层sql文件 *********//* //arp.addSqlTemplate("sql/all_sqls.sql"); _MappingKit.mapping(arp); // 初始化任务调度插件,参数为配置文件名 // me.add(new Cron4jPlugin(sysProp)); me.add(arp); } /** * 配置全局拦截器 */ @Override public void configInterceptor(Interceptors me) { // me.addGlobalActionInterceptor(new DuplicateLoginInterceptor()); } /** * 配置全局处理器 */ @Override public void configHandler(Handlers me) { // druid 统计页面功能 //me.add(DruidKit.getDruidStatViewHandler()); //me.add(new JavaMelodyHandler("/monitoring.*", true)); } @Override public void beforeJFinalStop() { } /** * * 配置模板引擎 */ @Override public void configEngine(Engine me) { // 这里只有选择JFinal TPL的时候才用 me.addSharedObject("RESOURCE_HOST", JFinal.me().getContextPath()); me.addSharedObject("WEB_HOST", JFinal.me().getContextPath()); // 配置共享函数模板 // me.addSharedFunction("/view/common/layout.html") } @Override public void afterJFinalStart() { System.err.println("SoJpt Boot 启动成功!"); } }
- 在 application.properties 配置文件中添加如下
arp.jdbc-url = jdbc:mysql://127.0.0.1/sojpt?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false arp.username = root arp.password = 123456 arp.is-dev-mode= true
- 在spring启动类中添加注解 @ComponentScan("com.sojpt"), 如下:
@ComponentScan("com.sojpt") //添加你定义的SoJptBootConfig类所在的包名称 @SpringBootApplication public class SoJptSpringbootApplication { public static void main(String[] args) { SpringApplication.run(SoJptSpringbootApplication.class, args); } }
使用说明
- 案例一 返回json
@RestController public class HelloController extends Controller { //不继承Controller,就是原生的Spring Boot,Jfinal的Aop也就不能用 @Before(Tx.class) //事务的用法 @RequestMapping("/list/jfinal") public void index() { System.out.println(getPara("id")); //获取参数示例 SqlPara sqlPara = Db.getSqlPara("admin_log.select"); Page<Record> page = Db.paginate(1, 10, sqlPara); renderJson(page); } }
- 案例二 文件下载
@RestController public class HelloPageController extends Controller { @Clear @RequestMapping("/file") public void index() { setAttr("msg", "123123"); renderFile(new File("d://test.txt")); } }
- 案例三 返回页面
@Controller public class HelloPageController extends Controller { @Before(LoginInterceptor.class) @RequestMapping("/page/jfinal") public void index() { setAttr("msg", "123123"); render("/view/index.html") //放在resources目录下 } }
参与贡献
www.sojpt.com
捐赠
评论