该插件暂支持JFinal框架Model对象和Controller对象注解注入
1.控制器注解注入(在继承JFinal框架的Controller的子类上加上注解标签@JFinalController)
@JFinalController({"/", "/hello"})
public class HelloController extends Controller {
public void index() {
User user = User.dao.findById("1500453530921");
renderHtml("id:" + user.getId() + "<br/>" + "name:" + user.getName() + "<br/>" + "age:" + user.getAge());
}
}
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface JFinalController {
String[] value();//访问某个 Controller 所需要的一个字符,相当于controllerKey,可定义多个
String module() default "";//所属模块,适用于路由拆分
String viewPath() default "controllerKey";//该 Controller 返回的视图的相对路径
}
2.在JFinal的配置类的路由配置上注册该标签(注入方式:二选一)
public class JFinalBaseConfig extends JFinalConfig {
.....
/**
* 路由配置
* @param routes
*/
public void configRoute(Routes routes) {
System.out.println("configRoute");
//获取控制器注解注入对象
ControllerAnnotation controllerAnnotation = new ControllerAnnotation(scanControllerPackage);
//第一种注入方式(直接传入路由对象,路径统一配置(适合单路由))
controllerAnnotation.injectController(routes);
//第二种注入方式(直接传入回调接口,路径配置(适合拆分路由))
controllerAnnotation.injectController(new IControllerScanReport() {
/**
*
* @param controllerKey 访问某个 Controller 所需要的一个字符,相当于controllerKey,可定义多个
* @param controllerClass 控制器Class
* @param module 所属模块,适用于路由拆分,默认“”
*/
public void report(String controllerKey, Class<?> controllerClass, String module) {
//do something
}
/**
*
* @param controllerKey 访问某个 Controller 所需要的一个字符,相当于controllerKey,可定义多个
* @param controllerClass 控制器Class
* @param viewPath 该 Controller 返回的视图的相对路径,默认“controllerKey”
* @param module 所属模块,适用于路由拆分,默认“”
*/
public void report(String controllerKey, Class<?> controllerClass, String viewPath, String module) {
//do something
}
});
}
.....
}
1.控制器注解注入(在继承JFinal框架的Model的子类上加上注解标签@JFinalModel)
//使用例子
@JFinalModel(tableName = "user")
public class User extends Model<User> {
}
//标签类
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface JFinalModel {
String tableName(); //数据库表名
String primaryKey() default "id"; //主键名称,默认为“id”
}
2.在JFinal的配置类的插件配置方法上注册该标签(注入方式:二选一;注:注解注入插件必须在ActiveRecordPlugin插件之前添加)
public class JFinalBaseConfig extends JFinalConfig {
.....
/**
* 插件添加配置
* @param plugins
*/
public void configPlugin(Plugins plugins) {
System.out.println("configPlugin");
//连接数据库
DruidPlugin dp = new DruidPlugin("jdbcUrl", "username", "password");
plugins.add(dp);
//建立表和对象映射关系对象
final ActiveRecordPlugin arp = new ActiveRecordPlugin(dp);
//添加表和对象映射关系,扫描@JFinalModel注解(注入方式一:直接传入ActiveRecordPlugin对象实例)
ModelAnnotationPlugin map1 = new ModelAnnotationPlugin(scanModelPackage);
map1.injectModel(arp);
//添加表和对象映射关系,扫描@JFinalModel注解(注入方式二:直接传入ActiveRecordPlugin对象实例)
ModelAnnotationPlugin map2 = new ModelAnnotationPlugin(scanModelPackage);
map2.injectModel(new IModelScanReport() {
public void report(String tableName, String primaryKey, Class<?> modelClass) {
//do something
}
public void report(String tableName, Class<?> modelClass) {
//do something
}
});
//添加插件(注:注解注入插件必须在ActiveRecordPlugin插件之前添加)
plugins.add(map1);
plugins.add(arp);
}
.....
}
<dependency>
<groupId>com.github.yu1234.JFinalPluginExt</groupId>
<artifactId>annotation</artifactId>
<version>1.0.0</version>
</dependency>
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.