4.5 Inject 依赖注入
以上的 me.setInjectDependency(true) 仅是针于 jfinal 的 web 组件而言的配置。而 Aop.get(…)、Aop.inject(…) 无需配置即可支持注入。
配置完成以后就可以在控制器中使用了,例如:
- public class AccountController {
- @Inject
- AccountService service; // 此处会注入依赖对象
- service.justDoIt(); // 调用被注入对象的方法
- }
- }
@Inject 还可以用于拦截器的属性注入,例如:
此外:注入动作可以向下传递。例如在 Controller 中使用 @Inject 注入一个 AaaService,那么在 AaaService 中可以使用 @Inject 注入一个 BbbService,如此可以一直向下传递进行注入.
如果需要创建的对象并不是 jfinal 接管的,那么可以使用 Aop.get(…) 方法进行依赖对象的创建以及注入,例如:
- public class MyKit {
- public void doIt() {
- service.justDoIt();
- }
- }
由于 MyKit 的创建并不是 jfinal 接管的,所以不能使用 @Inject 进行依赖注入。 而 Controller、Interceptor 的创建和组装是由 jfinal 接管的,所以可以使用 @Inject 注入依赖。
@Inject 注解还支持指定注入的实现类,例如下面的代码,将为 Service 注入 MyService 对象:
通过上面的映射,下面的代码将会为 Service 注入 MyService