【五】注入框架RoboGuice使用:(Your First POJO Injection)

上一篇我们简单的介绍了一下RoboGuice的使用(【四】注入框架RoboGuice使用:(Your First System Service Injection)),今天我们来看下普通Java对象的使用注解的方法:

(一)为了在Activity中普通Java对象使用注解,必须实现以下两个步骤:

①:创建继承RoboActivity的Activity

②:使用 @Inject来进行注解POJO(普通java对象)

在前面我们介绍了View控件,资源文件(Resources),系统服务(System Service)等Android平台特有的注解方法,RoboGuice同时也支持注解 Plain
Old Java Objects(普通Java对象)。但是Roboguice只会默认去调用该对象的无参数的构造方法,所以我们需要注解的类必须有该无参构造方法。

看下面的这个例子:

class MyActivity extends RoboActivity {
    @Inject Foo foo; // this will basically call new Foo();
}

该注解会通过无参数构造函数进行默认创建该实例。

(二)使用带有参数构造函数注解

如果有的情况下我们不想使用默认的构造函数,而是使用一个特定带有参数的构造函数,你有下面两种选择:

①:你可以对POJO(普通java对象)的构造函数进行注解

②:你可以创建一个provider和一个binding来进行实现

第二种的方法我会写一篇专门的文章进行介绍,到时候各位童鞋可以去看下。今天我们先关注第一个方法。

现在我们假设Foo类有一个Bar实例作为参数的构造函数,然后对Foo的该有参数的构造函数使用@Inject进行注解,那么此时RoboGuice会使用该带有参数的构造函数进行实例化。下面看下实现:

class Foo {
    Bar bar;

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

那么现在这里的RoboGuice会怎么样去获取Bar的实例呢?这个和其他注解器的规则一样,还是会去使用Bar的默认构造函数,除非Bar的带参数的构造函数也同样使用的@Inject注解。

(三)使用变量字段注解

上面我们已经通过默认构造函数或者使用@Inject注解的带参数构造函数来进行获取了Foo实例。然而我们还可以使用这两种方法结合着来初始化变量。那就是使用Field
injection.

前面几篇文章中我们已经对View空间,资源文件(Resources)的注解方法,现在我们可以在Foo类中添加属性字段的注解来实现.

class Foo {
    @Inject Bar bar;

    // Roboguice doesn't need a constructor, but you might...
}

上面的代码,当RoboGuice进行创建Foo实例的时候,它会首先创建Bar的实例并且直接注解到以bar命名的字段中。该和上面的构造函数注入的例子等同。这种方法我们的代码会更加简洁,易读但是普通的其他Java对象如果没有使用Roboguice,那么我们会难以使用Foo对象。

如果你使用Field或者Constructor,你可以浏览下面的网站来查看注解的详情信息:

http://code.google.com/p/google-guice/wiki/Injections

时间: 2024-10-11 04:34:34

【五】注入框架RoboGuice使用:(Your First POJO Injection)的相关文章

【三】注入框架RoboGuice使用:(Your First Resource Injection)

上一篇我们简单的介绍了一下RoboGuice的使用([二]注入框架RoboGuice使用:(Your First View Injection)),今天我们来看下资源文件的使用注解的方法: 为了在Activity中资源文件使用注解,必须实现以下两个步骤: ①:创建继承RoboActivity的Activity ②:使用 @InjectResource来进行注解资源文件 下面我们来实现以下.现在加入我们在res/anim目录下面有一个动画文件my_animation.xml,那我们使用@Injec

【二】注入框架RoboGuice使用:(Your First View Injection)

上一篇我们简单的介绍了一下RoboGuice的使用([一]注入框架RoboGuice使用:(A brief example of what RoboGuice does)),今天我们我看下View的注解的使用方法. 为了在Activity中使用View的注解,必须实现以下三个步骤: ①:自己定义的Activity继承RoboActivity ②:设置内容视图 content View ③:使用 @InjectView来进行注解View控件 下面我们来详细看一下使用方法: (一)首先创建一个继承与

【十四】注入框架RoboGuice使用总结

在我们平时开发Android项目的时候例如经常需要使用各种View控件,然后进行声明,findViewById,并且进行强转.每次都要写这样的代码就显得非常繁琐,并且容易出错哦.那么针对这种情况且不限定于以上的这类情况,Dependency injection 可以大大降低了类之间的依赖性,可以通过annotation (Java)描述类之间的依赖性,避免了直接调用类似的构造函数或是使用Factory来参加所需的类,从而降低类或模块之间的耦合性,以提高代码重用并增强代码的可维护性.Google

【六】注入框架RoboGuice使用:(Singletons And ContextSingletons)

上一篇我们简单的介绍了一下RoboGuice的使用([五]注入框架RoboGuice使用:(Your First POJO Injection)),今天我们来看下单例以及上下文单例(ContextSingletons)使用注解的方法,从上一篇文章中相信大家对于普通Java对象(POJO)注解已经很熟悉了. (一)概述:简要使用方法 ①:创建继承RoboActivity的Activity类 ②:使用@Inject进行注解POJO(普通Java对象) ③:使用@Singleton进行注解POJO类

【四】注入框架RoboGuice使用:(Your First System Service Injection)

上一篇我们简单的介绍了一下RoboGuice的使用([三]注入框架RoboGuice使用:(Your First Resource Injection)),今天我们来看下系统服务的使用注解的方法: 为了在Activity中系统服务使用注解,必须实现以下两个步骤: ①:创建继承RoboActivity的Activity ②:使用 @Inject来进行注解系统服务 下面我们来实现一个例子,和上一篇文章例子差不多,我们需要进行实现系统服务,我们同样创建一个继承RoboActivity的Activity

【十三】注入框架RoboGuice使用:(Logging via Ln)

上一篇我们简单的介绍了一下RoboGuice的使用([十二]注入框架RoboGuice使用:(Your First Injected ContentProvider)),今天我们来看下Log日志使用. Android应用通过会使用内置的android.util.log在Android控制台上面打印日志信息.RoboGuice也提供了另外的日志管理,你可能会想要使用. (一):  RoboGuice日志管理和通常的Log差不多,但也同样具备以下优点: ①:对于发布包来说,Debug and ver

【十】注入框架RoboGuice使用:(Your First Testcase)

上一篇我们简单的介绍了一下RoboGuice的使用([九]注入框架RoboGuice使用:(Your First Injected Service and BroadcastReceiver)),今天我们来看下测试用例(TestCase)的注入 RoboGuice使得我们更加容易实现可测试的Android应用程序,本文章就来详细解说下:当我们测试的时候,如何编写测试用例,已经从RoboGuice中获益.本文章使用Android Robolectric,适合大部分用Android标准测试的情况.

【十二】注入框架RoboGuice使用:(Your First Injected ContentProvider)

上一篇我们简单的介绍了一下RoboGuice的使用([十一]注入框架RoboGuice使用:(Your First Injection into a Custom View class)),今天我们来看下内容提供者(ContentProvider)的注入. 和Robo*Activities一样,RoboContentProviders通过RoboGuice也能自动获得注入,为了简便我们可以注入 authority URI,这时我们需要定义下面自己的module: public class Con

【十一】注入框架RoboGuice使用:(Your First Injection into a Custom View class)

上一篇我们简单的介绍了一下RoboGuice的使用([十]注入框架RoboGuice使用:(Your First Testcase)),今天我们来看下自定义View的注入(Custom View). 在开始本文之前,你先要熟悉普通Java对象的注入(点击进入).在RoboGuice 3.0版本中你同样给自定义View(Custom View)进行诸如. class MyView extends View { @Inject Foo foo; @InjectView(R.id.my_view) T