在Actframework中使用依赖注入

申明需要注入的对象

ActFramework通过javax.inject.Inject注解识别需要注入的对象. 你可以通过以下三种标准方式申明需要注入的对象:

字段注入

public class Foo {
    @Inject
    private Bar bar;
}

构造器注入

public class Foo {
    private Bar bar
    
    @Inject
    public Foo(Bar bar) {
        this.bar = bar;
    }
}

设置器(Setter)注入

public class Foo {
    private Bar bar
    @Inject
    public void setBar(Bar bar) {
        this.bar = bar;
    }
}

小贴士 字段注入最为简明,不过对单元测试会造成一些麻烦

获取有依赖申明的对象

App app = App.instance();
// this ensure Bar has been injected into Foo
Foo foo = app.getInstance(Foo.class);

方法参数的依赖注入

Actframework支持三种方法参数注入:

  1. 响应器方法
  2. 命令器方法
  3. 任务方法

当框架检测到响应函数参数列表中某个参数类型有依赖注入绑定,框架自动使用依赖注入提供该参数值

// suppose XyzDao has bound provider, then framework will use the provider to 
// value for `dao` parameter
public Result handleXyzRequest(String s, int i, ActionContext context, XyzDao dao) {
    ...
}

通过Module类声明绑定

如果你以前使用过Guice,和通常的Guice应用一样,你可以创建Module类来申明注入绑定规则:

public class GreetingModule extends org.osgl.inject.Module {
    @Override
    protected void configure() {
        bind(GreetingService.class).to(GreetingServiceImpl.class);
    }
}

小贴士 在ActFramework中你不必使用Module类来创建Injector对象实例。框架会自动寻找所有申明的Module类并在内部创建Injector实例

链接

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小灰灰

Spring之RestTemplate中级使用篇

前面一篇介绍了如何使用RestTemplate发起post和get请求,然而也只能满足一些基本的场景,对于一些特殊的如需要设置请求头,添加认证信息等场景,却没有...

871
来自专栏xingoo, 一个梦想做发明家的程序员

【Spring开发】—— Spring Core

前言  最近由于一些工作的需要,还有自己知识的匮乏再次翻开spring。正好整理了一下相关的知识,弥补了之前对spring的一些错误认知。这一次学习,更加...

1899
来自专栏编程直播室

Spring Boot 之 Spring Data JPA 三(Specifications)一、首先建立一个Spring Boot 工程二、编写一个实体类来记录数据三、通过接口实现Specifica

1735
来自专栏芋道源码1024

注册中心 Eureka 源码解析 —— 应用实例注册发现(六)之全量获取

本文主要分享 Eureka-Client 向 Eureka-Server 获取全量注册信息的过程。

1110
来自专栏Flutter入门到实战

WebView深度学习(三)之WebView的内存泄漏、漏洞以及缓存机制原理和解决方案

上两篇文章讲到了WebView的基本使用以及Android和js的交互 以及 全面总结WebView遇到的坑及优化 ,这篇文章讲一下内存泄漏和漏洞处理。如果你想...

771
来自专栏一名叫大蕉的程序员

简易但不简单的配置中心No.79

嘛小伙伴们都问我我是怎么抽那么多时间来看书的,其实说难也不难说简单其实也不简单,就是提高效率和挤时间嘛。你要相信在一天中,每个时间都有它自己应该待的位置,做好工...

1999
来自专栏Java Web

Spring MVC【入门】就这一篇!

MVC 设计概述 在早期 Java Web 的开发中,统一把显示层、控制层、数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Mod...

3438
来自专栏SpringBoot 核心技术

第三十四章:SpringBoot配置类WebMvcConfigurerAdapter

2076
来自专栏JAVA高级架构

spring和springMVC的面试问题总结

1.Spring中AOP的应用场景、Aop原理、好处? 答:AOP--Aspect Oriented Programming面向切面编程;用来封装横切关注点,具...

3519
来自专栏程序员宝库

Spring MVC工作原理

Dispatcher Servlet分发器 Handler Mapping 处理器映射 Controller 控制器 ModelAndView 模型和视图对象 ...

3438

扫码关注云+社区