在Spring Boot框架下使用Jfinal特性极速开发,可以在Spring Boot中向使用Jfinal一样使用Enjoy, controller的一系列方法(如: getFile(), renderFile....),以及ActiveRecord
SoJpt Boot
在Spring Boot框架下使用Jfinal特性极速开发
可以在Spring Boot中向使用Jfinal一样使用Enjoy, controller的一系列方法(如: getFile(), renderFile....),以及ActiveRecord
软件架构
基于 Spring Boot 2.2.0.M1 制作
安装教程
1、在Spring Boot 2.0以上项目中 加入maven坐标
<dependency> <groupId>com.jfinal</groupId> <artifactId>jfinal</artifactId> <version>3.7</version> </dependency> <dependency> <groupId>com.gitee.sohnny</groupId> <artifactId>sojpt-boot</artifactId> <version>1.1</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.5</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> </dependency>
2、添加 MySqlActiveRecordPluginConfiguration 与 SoJptViewResolver配置类
@Configuration
@EnableConfigurationProperties(ActiveRecordPluginProperties.class)
public class MySqlActiveRecordPluginConfiguration{
private static DruidPlugin dp;
private static ActiveRecordPlugin arp;
@Autowired
private ActiveRecordPluginProperties arpProperties;
@Bean public ActiveRecordPlugin ininitActiveRecordPlugin(){
dp = new DruidPlugin(arpProperties.getJdbcUrl(), arpProperties.getUsername(), arpProperties.getPassword());
WallFilter wallFilter = new WallFilter(); // 加强数据库安全
wallFilter.setDbType("mysql");
dp.addFilter(wallFilter);
dp.addFilter(new StatFilter()); // 添加 StatFilter 才会有统计数据
dp.setDriverClass("com.mysql.cj.jdbc.Driver");
dp.stop();
dp.start();
arp = new ActiveRecordPlugin(dp);
arp.setTransactionLevel(Connection.TRANSACTION_READ_COMMITTED);
arp.setDialect(new MysqlDialect());
arp.setShowSql(arpProperties.getIsDevMode());
arp.getEngine().setSourceFactory(new ClassPathSourceFactory());
arp.addSqlTemplate("/sql/all_sqls.sql");
//******** 在此添加dao层sql文件 *********//*
//_MappingKit.mapping(arp);
System.out.println("ActiveRecordPlugin --- started");
// 必须手动调用start
arp.stop();
arp.start();
return arp;
}
}
@Configuration
public class SoJptViewResolver {
@Autowired
private ServletContext servletContext;
@Bean(name = "jfinalViewResolver")
public JFinalViewResolver getJFinalViewResolver() {
JFinalViewResolver jfr = new JFinalViewResolver();
// setDevMode 配置放在最前面
jfr.setDevMode(true);
// 使用 ClassPathSourceFactory 从 class path 与 jar 包中加载模板文件
jfr.setSourceFactory(new ClassPathSourceFactory());
jfr.setSuffix(".html");
jfr.setContentType("text/html;charset=UTF-8");
jfr.setOrder(0);
//jfr.addSharedFunction("/view/common/_layout.html");
//jfr.addSharedFunction("/view/common/_paginate.html");
initRender();
return jfr;
}
private void initRender() {
Constants constants = new Constants();
constants.setDevMode(true);
//constants.setJsonFactory(new FastJsonFactory());
RenderManager.me().init(JFinalViewResolver.engine, constants, servletContext);
}
}3、在 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
4、在spring启动类中添加注解 @ComponentScan("com.sojpt"), 如下:
@ComponentScan("com.sojpt") //添加你定义的包名称
@SpringBootApplication
public class SoJptSpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SoJptSpringbootApplication.class, args);
}
}5、使用说明
1. 案例一 返回json
@RestController
public class HelloController extends SoJptController {
@Tx //添加事务 多数据源时: @Tx(value = "configName")
@RequestMapping("/list")
public String index() {
SqlPara sqlPara = Db.getSqlPara("admin_log.select");
Page<Record> page = Db.paginate(1, 10, sqlPara);
return JsonKit.toJson(page)
}
@Tx //添加事务 多数据源时: @Tx(value = "configName")
@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);
}
}2. 案例二 文件下载
@RestController
public class HelloPageController extends SoJptController {
@RequestMapping("/file")
public void index() {
setAttr("msg", "123123");
renderFile(new File("d://test.txt"));
}
}3. 案例三 返回页面
@Controller
public class HelloPageController extends SoJptController {
@RequestMapping("/page")
public String index() {
setAttr("msg", "123123");
return "/view/index.html"; //放在resources目录下
}
@RequestMapping("/page/jfinal")
public void index() {
setAttr("msg", "123123");
render("/view/index.html") //放在resources目录下
}
}www.sojpt.com
项目:SoJpt Boot