Android 依赖注入

Dagger2 ![https://github.com/google/dagger](github托管地址)

1. 安装依赖:

```

compile ‘com.google.dagger:dagger:2.0.1‘

compile ‘com.google.dagger:dagger-compiler:2.0.1‘

```

2. 新建一个Component,这是一个接口:

```

@Component(modules = ApplicationModule.class)

public interface ApplicationComponent {

}

```

3. 新建一个Module

```

@Module

public class ApplicationModule {

}

```

ok, 这里出错了,Error:(4, 24) 错误: 程序包javax.annotation不存在。

需要添加新的依赖,直接上最新的:

```

compile ‘org.glassfish:javax.annotation:10.0-b28‘

```

可以查询一下![jcenter](https://bintray.com/bintray/jcenter/)

又不行了,DaggerApplicationComponent这个自动生成的类,怎么也导入不了。

解决方法:

在Project的build.gradle中加上:

```

buildscript {

repositories {

jcenter()

}

dependencies {

classpath ‘com.android.tools.build:gradle:1.2.3‘

classpath ‘com.neenbedankt.gradle.plugins:android-apt:1.7‘ //新增

}

}

```

在app的build.gradle中添加:

```

apply plugin: ‘com.android.application‘

apply plugin: ‘com.neenbedankt.android-apt‘

```

修改dagger-compile的导入方式:

```

apt ‘com.google.dagger:dagger-compiler:2.0.1‘

```

Sync.这样就可以找到那个自动生成的DaggerApplicationComponent,在Application的onCreate中生成Component:

```

component = DaggerApplicationComponent.builder()

.applicationModule(new ApplicationModule())

.build();

```

4. 添加注入

```

@Component(modules = ApplicationModule.class)

public interface ApplicationComponent {

void inject(MercenaryApplication androidApplication);

void inject(BaseActivity activity);

void inject(BaseFragment fragment);

}

```

这几个都得在Application中提供注入。对应的Activity中也要注入。

5,ApplicationModule中提供Provider

```

@Provides

MercenaryApplication provideApplication() {

return mApplication;

}

@Provides

LayoutInflater provideLayoutInflater(){

return LayoutInflater.from(mApplication);

}

```

这个基本结构已经出来了。

代码上传到 ![MercenaryDemoAndroid](https://git.oschina.net/brightmoon/MercenaryDemoAndroid),可以查看 tag step-1.

时间: 2024-11-08 07:10:26

Android 依赖注入的相关文章

Android 依赖注入: Dagger 2 实例讲解(一)

本文原创,转载请注明出处:http://blog.csdn.net/zjbpku 关于Dagger,在之前的博文(Android 依赖注入:Dagger 实例讲解(Demo下载))中已有介绍, 本文说的Dagger 2主要是由Google技术 人员参与开发的,当然包括Square的各位及其他一些Contributors在内的大牛也贡献了不少.该项目大概是从去年11月份开始启动的,到目前该项 目还在继续进行,Snapshot version也是刚刚发布不久,从Github提供的内容看,不久会是Pr

Android依赖注入Dagger的使用和源码解析(上篇)

一.基本概念 依赖注入(DI)和控制反转(IOC): 依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源:而控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源. 使用依赖注入可以带来以下好处: 依赖的注入和配置独立于组件之外. 因为对象是在一个独立.不耦合的地方初始化,所以当注入抽象方法的时候,我们只需要修改对象的实现方法,而不用大改代码库. 依赖可以注入到一个组件中:我们可以注入这

Android 依赖注入框架RoboGuice

概述 在开发应用时一个基本原则是模块化,并且尽最大可能性地降低模块之间的耦合性.Dependency injection 大大降低了类之间的依赖性,可以通过annotation描述类之间的依赖性,避免了直接调用类似的构造函数或是使用Factory来参加所需的类,从而降低类或模块之间的耦合性,以提高代码重用并增强代码的可维护性. Google Guice提供了Java平台上一个轻量级的 Dependency injection 框架,并可以支持开发Android应用.本指南将使用Android平台

关于Android依赖注入框架ButterKnife和Dagger的简单比较

最近调研了Android平台可以使用的依赖注入框架.发现现在常用的有四种.Dagger.Butter Knife.RoboGuice.Android Annotations.经过一系列的比较,最后我们的选择 的范围缩小到Dagger.Butter Knife这2个框架上.其实在国内外使用的比较多的应该是Dagger.但是我觉得还是有点复杂了,再看jakewharton的blog时,他也提到了dagger,我 摘抄了他在stackoverflow上回答Difference between Dagg

Android 依赖注入函数库Roboguice(一)

Roboguice是一个用于Android应用的依赖注入框架,使用Google官方的Guice库位极大地简化了Android的依赖注入.使用他使编程变得更加简单有趣. 使用Roboguice需要几个jar点击下载 下载知道导入到自己的项目中 使用Roboguice是Activity页面需要继承RoboActivity /** * */ package com.example.roboguicetest; import com.google.inject.Inject; import robogu

Android 依赖注入 ButterKnife 基本使用

ButterKnife 是一个快速 Android View 注入框架,开发者是Jake Wharton,简单的来说,ButterKnife 是用注解的方式替代findViewById和setXXXListener 项目GitHub地址:https://github.com/JakeWharton/butterknife/ Android Studio 配置步骤可以直接参考Github上的介绍,很简单. ButterKnife 是在编译时注解,不会在运行时产生负担,Build工程后你会发现它生成

Android依赖注入之BufferKnife 8.0注解使用

前言: App项目开发大部分时候还是以UI页面为主,这时我们需要调用大量的findViewById以及setOnClickListener等代码,控件的少的时候我们还能接受,控件多起来有时候就会有一种想砸键盘的冲动.所以这个时候我们想着可以借助注解的方式让我们从这种繁重的工作中脱离出来,也让代码变得更加简洁,便于维护,今天主要学习一下只专注View.Resource.Action注解框架BufferKnife . BufferKnife 介绍 BufferKnife 是一个专注于Android系

android使用篇(四) 注解依赖注入IOC实现绑定控件

在android使用篇(三) MVC模式中提到一个问题: 1) 视图层(View):一般採用XML文件进行界面的描写叙述,使用的时候能够很方便的引入,可是用xml编写了,又须要在Acitvity声明而且实例化,有点麻烦,考虑是否能做一个类似注解实现匹配,或者写一个类获取xml的各个节点然后自己主动进行封装,当然,这仅仅是个想法,以后再实现. 今天最终把这个想法实现了,使用依赖注入IOC注解实现对activity中控件的实例化. 先普及一下java的反射机制和注解机制的知识: 下面引用大神的两篇文

Android中的依赖注入:Dagger函数库的使用(一)

--欢迎转载,请注明出处 http://blog.csdn.net/asce1885 ,未经本人同意请勿用于商业用途,谢谢-- 原文链接:http://antonioleiva.com/dependency-injection-android-dagger-part-1/ 本文Gitbooks链接:http://asce1885.gitbooks.io/android-rd-senior-advanced/content/androidzhong_de_yi_lai_zhu_ru_ff1a_da