# jfast
**Repository Path**: zhuimengshaonian/jfast
## Basic Information
- **Project Name**: jfast
- **Description**: 1. 它是一款轻量级 Java Web 框架,
- **Primary Language**: Java
- **License**: AFL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 27
- **Forks**: 8
- **Created**: 2017-10-13
- **Last Updated**: 2024-08-22
## Categories & Tags
**Categories**: webframework
**Tags**: None
## README
# jfast
它是一款轻量级 Java Web 框架,基于MVC架构
- 内置 IOC(基于guice)、AOP(基于guice,cglib)、ORM、DAO、MVC 等特性
- 基于 Servlet 3.0 规范
- 使用 Java 注解取代 XML 配置
- 支持jsp,velocity等视图
- 面向基于 Web 的中小规模的应用程序
- 新手能在较短时间内入门
- 核心具有良好的定制性且插件易于扩展
# 入门教程
1. 创建一个 Maven Web 工程
整个工程的目录结构如下:
```
Jfast-demo/
┗ src/
┗ main/
┗ java/
┗ resources/
┗ webapp/
┗ pom.xml
在 java 目录下,创建以下包名目录结构:
org/
┗ jfast/
┗ demo/
┗ contrller/
┗ entity/
┗ service/
```
>**可见,基础包名为:com.jfast,下面的配置中会用到它。**
2. 配置 Maven 依赖
编辑 pom.xml 文件,添加 smart-framework 依赖:
```
**
com.jfast
jfast
1.0
**
```
3.编写Jfast核心配置文件
在 `resources` 目录下,创建一个名为 `jfast.properties` 的文件,内容如下:
##jfast基础配置
```
##配置包扫描路径
jfast.basePackage=com.jfast
##配置视图类型
jfast.viewType=jsp
##配置view资源路径
jfast.baseViewPath=/WEB-INF/jsp/
##数据源配置
jfast.dataSource.type=mysql
jfast.dataSource.url=jdbc:mysql://localhost:3306/jfast?characterEncoding=utf8
jfast.dataSource.username=root
jfast.dataSource.password=123456
```
读取properties文件属性值
在jfast中,只需使用@ConfigurationProperties注解即可
配置文件
要读取jfast.properties的配置信息非常简单,例如我们配置内容如下:
```
jfast.myconfig.name=aaa
jfast.myconfig.passowrd=bbb
jfast.myconfig.age=10
```
要读取这个配置信息,我们需要定义我们的一个model类,并通过@ConfigurationProperties注解给我们的类配置上类与配置文件的对应关系,如下所示:
```
@ConfigurationProperties(prefix="jfast.myconfig")
public class MyConfigModel{
private String name;
private String password;
private int age;
//getter setter 略
}
```
//更高级用法
@ConfigurationProperties可以指定要读取的properties文件
> 提示:需根据实际情况修改以上配置。
4.开始代码开发
```
/**
数据库实体类
**/
@Table(name ="user_info",primaryKey = {"id"})
public class UserInfo {
private long id;
private String username;
private String password;
// getter/setter
}
```
```
/**
编写Controller
**/
@Controller
@RequestMapping("/user")
public class UserController {
@Inject
private UserService userService;
public void index(){
}
@RequestMapping("/list")
public void list(){
}
//提示:方法中的@RequestMapping可以进行省略,此时jfast将会把方法名当成
actionKey进行url映射
}
```
```
/**
编写UserService 接口
**/
@Controller
@RequestMapping("/user")
public interface UserService {
//定义接口方法
}
```
```
/**
编写UserService 接口
**/
@Bean
public interface UserServiceImpl implements UserService{
}
```
5.ORM层的使用
```
5.1 DefaultJdbcTemplate
//返回实体类对象
UserInfo userInfo = jdbcTemplate.findOne("select * from user_info where id = ?",UserInfo.class,1);
return userInfo;
//返回实体类集合
List list= jdbcTemplate.findAll("select * from user_info where id = ?",UserInfo.class,1);
return userInfo;
//返回map集合
Map reMap = jdbcTemplate.findMap("select id,password from user_info where id = ?","information",1);
return rep;
//insert操作
UserInfo userInfo = new UserInfo();
userInfo.setName("hello");
userInfo.setPassword("123456");
boolean flag = jdbcTemplate.insert(userInfo);
```
5.2 数据库事物
在jfast中对于数据库事物的处理,您无需编写任何代码,只需使用@Transaction注解即可完成,代码入下
```
@Bean
public class JfastServiceImpl implements JfastService{
@Transaction
public void login(){
}
}
```
3.多源数据库配置
```
jfast.dataSource.information.url=jdbc:mysql://localhost:3306/information?characterEncoding=utf8
jfast.dataSource.master.username=root
jfast.dataSource.master.password=123456
jfast.dataSource.master.basePackage=com.jfast.entity.master
jfast.dataSource.master.dataSourceClassName=com.jfast.framework.web.orm.dataSource.DefaultDataSourceFactory
jfast.dataSource.slave.url=jdbc:mysql://localhost:3306/stroe?characterEncoding=utf8
jfast.dataSource.slave.username=root
jfast.dataSource.slave.password=123456
jfast.dataSource.slave.basePackage=com.jfast.entity.slave
jfast.dataSource.slave.dataSourceClassName=com.jfast.framework.web.orm.dataSource.DefaultDataSourceFactory
```
多源数据库事物
```
@Bean
public class JfastServiceImpl implements JfastService{
@Transaction(configName = "slave")
public void login(){
}
@Transaction(configName = "master")
public void insert(){
}
}
```