|
|
@@ -28,9 +28,9 @@ package com.jfinal.aop;
|
|
|
* 而后者先要使用 Class 去创建对象,创建完对象以后对该对象之中的属性进行注入。
|
|
|
* 简单一句话:get(...) 比 inject(...) 多了一个目标对象的创建过程
|
|
|
*
|
|
|
- * 4:是否要 singleton 与 enhance 根据 AopManager.me().setSingleton(...)、AopManager.me().setEhnace(...) 配置来操作
|
|
|
+ * 4:AopManager.me().setSingleton(...) 用于配置默认是否为单例
|
|
|
*
|
|
|
- * 5:在目标类上使用注解 Singleton 与注解 Enhance 可以覆盖掉上面的默认配置
|
|
|
+ * 5:在目标类上使用注解 Singleton 可以覆盖掉上面 setSingleton(...) 方法配置的默认值
|
|
|
*
|
|
|
*
|
|
|
* 基本用法:
|
|
|
@@ -56,22 +56,17 @@ package com.jfinal.aop;
|
|
|
* 2:只进行注入,对象自己创建
|
|
|
* Service srv = Aop.inject(new Service());
|
|
|
* srv.doIt();
|
|
|
- * Aop.inject(...) 会对 OtherService otherSrv 进行注入,并且对 otherSrv 进行 ehnace,
|
|
|
+ * 由于 Service 对象是 new 出来的,不会被 AOP 代理,所以其 doIt() 方法上的 Aaa 拦截器并不会生效
|
|
|
+ * Aop.inject(...) 会对 OtherService otherSrv 进行注入,并且对 otherSrv 进行 AOP 代理,
|
|
|
* 所以 OtherService.doOther() 方法上的 Bbb 拦截器会生效
|
|
|
*
|
|
|
* 3:创建对象并注入
|
|
|
* Service srv = Aop.get(Service.class);
|
|
|
* srv.doIt();
|
|
|
* Aop.get(...) 用法对 OtherService otherSrv 的处理方式完全一样,在此基础之上 Service 自身也会被
|
|
|
- * enhance,所以 doIt() 上的 Aaa 拦截器会生效,而 Aop.inject(...) 用法下 Aaa 拦截器不起用用
|
|
|
- *
|
|
|
- * 4:以上两点中的 enhance 还取决于配置
|
|
|
- * AopManager.me().setEnhance(false) 配置以后,只注入对象,但被注入对象不进行 enhance, Aaa、Bbb 拦截器都不会生效
|
|
|
- *
|
|
|
- *
|
|
|
- * 注意:后续的 jfinal 版本将考虑根据目标类是否配置了拦截器进行增强的新设计,可能会去除与 enhance 有关的配置与代码
|
|
|
- * 所以与 enhance 有关的配置已被 @Deprecated,不建议使用
|
|
|
+ * AOP 代理,所以 doIt() 上的 Aaa 拦截器会生效
|
|
|
*
|
|
|
+ * 4:小结:对象的创建交给 Aop 而不是自己 new 出来,所创建的对象才能被 AOP 代理,其上的拦截器才能生效
|
|
|
*
|
|
|
*
|
|
|
* 高级用法:
|
|
|
@@ -81,17 +76,14 @@ package com.jfinal.aop;
|
|
|
*
|
|
|
* 2:被注入对象默认是 singleton 单例,可以通过 AopManager.me().setSingleton(false) 配置默认不为单例
|
|
|
*
|
|
|
- * 3:被注入对象默认会被 enhance 增强,可以通过 AopManager.me().setEnhance(false) 配置默认不增强
|
|
|
- *
|
|
|
- * 4:可以在目标类中中直接配置注解 Singleton 与注解 Enhance:
|
|
|
+ * 3:可以在目标类中中直接配置注解 Singleton:
|
|
|
* @Singleton(false)
|
|
|
- * @Enhance(false)
|
|
|
* public class MyService {...}
|
|
|
*
|
|
|
- * 注意:以上代码中的注解会覆盖掉 2、3 中 setSingleton()/setEnhance() 方法配置的默认值
|
|
|
+ * 注意:以上代码中的注解会覆盖掉 2 中 setSingleton() 方法配置的默认值
|
|
|
*
|
|
|
- * 5:如上 2、3、4 中的配置,建议的用法是:先用 /setSingleton()/setEnhance() 配置大多数情况,然后在个别
|
|
|
- * 违反上述配置的情况下使用 Singleton 注解与 Enhance 注解来覆盖默认配置,这样可以节省大量代码
|
|
|
+ * 4:如上 2、3 中的配置,建议的用法是:先用 setSingleton() 配置大多数情况,然后在个别
|
|
|
+ * 违反上述配置的情况下使用 Singleton 注解来覆盖默认配置,这样可以节省大量代码
|
|
|
*/
|
|
|
public class Aop {
|
|
|
|