Spring Boot 下使用 Jfinal 特性 SoJpt Boot

Apache 2.0
Java
跨平台
2019-04-04
Sohnny

 

SoJpt Boot

介绍

sojpt-logo

    在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的极速开发特性,有更多的时间去配恋人或家人。

安装教程

  1. 在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>
  1. 添加 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 启动成功!");
	}

}
  1. 在 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
  1. 在spring启动类中添加注解 @ComponentScan("com.sojpt"), 如下:
@ComponentScan("com.sojpt") //添加你定义的SoJptBootConfig类所在的包名称
@SpringBootApplication
public class SoJptSpringbootApplication {

	public static void main(String[] args) {
		SpringApplication.run(SoJptSpringbootApplication.class, args);
	}

}

使用说明

  1. 案例一 返回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);
    }
    
}
  1. 案例二 文件下载
@RestController
public class HelloPageController extends Controller {
    
    @Clear
    @RequestMapping("/file")
    public void index() {
		
		setAttr("msg", "123123");
		renderFile(new File("d://test.txt"));
    }
    
}
  1. 案例三 返回页面
@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

 捐赠 

 

的码云指数为
超过 的项目
加载中

评论(2)

Sohnny
Sohnny
取消了Jfinal路由
opal
opal
jfinal中修改了什么?

SoJpt Boot 2.5.5-3.8 发布,Spring Boot 使用 Jfinal 极速开发

SoJpt-Boot-2.5.5-3.8 changelog 1、可以省去spring boot配置文件 (项目不需要的情况) 2、进一步优化,减少metaspace开销 3、兼容yml配置文件 SoJpt-Boot-2.5.4-3.8 changelog 1、提升Contr...

05/09 22:11

SoJpt Boot 2.5.3-3.8 发布,Spring Boot 使用 Jfinal 极速开发

SoJpt-Boot-2.5.3-3.8 changelog 1、解决spring cloud 环境下报 UT010005: Cannot call getOutputStream(), getWriter() 2、加入路径容错 3、修复上传文件报异常的bug 4、JsonRender.exclud...

05/02 16:33

SoJpt Boot 2.3-3.8 发布,Spring Boot 使用 Jfinal 特性极速开发

SoJpt Boot 2.3-3.8 发布了。SoJpt Boot 基于 JFinal 与 Spring Boot制作, 实现了 Spring Boot 与 Jfinal 的混合双打,使 Spring Boot 下的开发者能够体验 Jfinal 的极速开发特性。新版更新内...

04/18 21:08

SoJpt Boot 2.2-3.8 发布,Spring Boot 使用 Jfinal 特性极速开发

在Spring Boot框架下使用Jfinal特性极速开发,可以在Spring Boot中向使用Jfinal一样使用Enjoy、Aop、Controller等一系列方法(如: getFile(), renderFile....),以及ActiveRecord SoJpt Boot,在...

04/13 11:47

SoJpt Boot 2.0-3.8 发布,Spring Boot 使用 Jfinal 特性极速开发

SoJpt Boot,在Spring Boot框架下使用Jfinal特性极速开发。 可以在Spring Boot中向使用Jfinal一样使用Enjoy, Aop, controller的一系列方法(如: getFile(), renderFile....),以及ActiveRecor...

04/09 22:13

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

SoJpt 脚手架 v1.0 发布 (Layui+Jfinal+Mysql/Oracle)

SoJpt 脚手架是一个集用户管理,权限管理,角色管理,审计功能及权限分配,角色分配与一体的后台管理框架,同时借鉴 Jfinal 官方最佳实践 Jfinal-club 会员项目以及作者多年实战经验使该项目...

03/30 11:42
11
0
SoJpt 脚手架 (基于Jfinal的web脚手架)

SoJpt 脚手架 (基于Jfinal的web脚手架)

2018/05/22 14:06
82
0
SoJpt (oracle) 0.2 正式发布

同时完善mysql版代码生成

2018/05/27 15:48
101
0
Spring Boot 笔记 之 Spring Boot的启动器Starter详解

Spring Boot的启动器Starter详解 作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs Spring Boot应用启动器基本的一共有44种,具体如下: ...

2016/12/12 16:41
25
0
spring boot自动配置幕后

尝试接口spring boot @EnableAutoConfiguration 注解背后原理。

2015/12/29 23:57
767
1
Spring Boot starter poms 记录

常用的spring boot

2016/08/04 17:33
21
0
Spring Boot实战与原理分析视频课程

课程大纲 http://edu.51cto.com/course/6558.html 课程目标 掌握Spring Boot的运行原理,能把Spring Boot应用到项目实战中去 适用人群 有Spring基础的Java开发人员,微服务开发人员 课程简介...

2017/10/18 12:19
18
0
Spring Boot 网易云课堂视频

网易云课堂视频 地址:《从零开始学Spring Boot》: http://study.163.com/course/introduction.htm?courseId=1004329008 提供:答疑、笔记、讨论、源代码下载、PPT下载、学习课时记录 课程更...

2017/11/10 14:45
31
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部