Download Guice Tutorial
Total Page:16
File Type:pdf, Size:1020Kb
i About the Tutorial Guice is an open source, Java-based dependency injection framework. It is quiet lightweight and is actively developed/managed by Google. This tutorial covers the concepts required for a basic understanding of Google Guice and gives you a feel of how it works. This tutorial gives you a comprehensive coverage of concepts of Guice and makes you comfortable to use it in your software development projects. Audience This tutorial has been prepared for the beginners to help them understand the basic to advanced concepts related to Google Guice. Prerequisites Before you start practicing various types of examples given in this reference, we assume that you are already aware about computer programs and computer programming languages. Copyright & Disclaimer @Copyright 2018 by Tutorials Point (I) Pvt. Ltd. All the content and graphics published in this e-book are the property of Tutorials Point (I) Pvt. Ltd. The user of this e-book is prohibited to reuse, retain, copy, distribute or republish any contents or a part of contents of this e-book in any manner without written consent of the publisher. We strive to update the contents of our website and tutorials as timely and as precisely as possible, however, the contents may contain inaccuracies or errors. Tutorials Point (I) Pvt. Ltd. provides no guarantee regarding the accuracy, timeliness or completeness of our website or its contents including this tutorial. If you discover any errors on our website or in this tutorial, please notify us at [email protected] i Google Guice Table of Contents About the Tutorial ................................................................................................................................ i Audience ............................................................................................................................................... i Prerequisites ......................................................................................................................................... i Copyright & Disclaimer ......................................................................................................................... i Table of Contents ................................................................................................................................. ii 1. GUICE – OVERVIEW .......................................................................................................... 1 Dependency Injection .......................................................................................................................... 1 Dependency Injection using Guice (Binding) ........................................................................................ 2 2. GUICE – ENVIRONMENTAL SETUP .................................................................................... 3 Local Environment Setup ..................................................................................................................... 3 Setting up the Path for Windows 2000/XP ........................................................................................... 3 Setting up the Path for Windows 95/98/ME ........................................................................................ 3 Setting up the Path for Linux, UNIX, Solaris, FreeBSD .......................................................................... 3 Popular Java Editors............................................................................................................................. 4 Google Guice Environment .................................................................................................................. 4 Set CLASSPATH Variable ...................................................................................................................... 5 3. GOOGLE GUICE – FIRST APPLICATION .............................................................................. 6 Complete Example ............................................................................................................................... 7 4. GOOGLE GUICE – LINKED BINDING ................................................................................. 10 Complete Example ............................................................................................................................. 10 5. GOOGLE GUICE – BINDING ANNOTATIONS .................................................................... 12 Complete Example ............................................................................................................................. 12 6. GOOGLE GUICE – NAMED BINDING ................................................................................ 15 Complete Example ............................................................................................................................. 15 ii Google Guice 7. GOOGLE GUICE – CONSTANT BINDINGS ........................................................................ 18 Complete Example ............................................................................................................................. 18 8. GOOGLE GUICE – @PROVIDES ANNOTATION ............................................................... 20 Complete Example ............................................................................................................................. 20 9. GOOGLE GUICE – PROVIDER CLASS ................................................................................ 23 10. GOOGLE GUICE – CONSTRUCTOR BINDINGS .................................................................. 26 11. GOOGLE GUICE – INBUILT BINDINGS .............................................................................. 29 12. GOOGLE GUICE – JUST-IN-TIME BINDINGS ..................................................................... 31 13. GOOGLE GUICE – CONSTRUCTOR INJECTION ................................................................. 33 14. GOOGLE GUICE – METHOD INJECTION ........................................................................... 35 15. GOOGLE GUICE – FIELD INJECTION ................................................................................. 37 16. GOOGLE GUICE – OPTIONAL INJECTION ......................................................................... 39 17. GOOGLE GUICE – ON-DEMAND INJECTION .................................................................... 41 18. GOOGLE GUICE – SCOPES ............................................................................................... 44 Application of Scopes ........................................................................................................................ 44 Example ............................................................................................................................................. 45 19. GOOGLE GUICE – ASPECT ORIENTED PROGRAMMING ................................................... 49 Important Classes .............................................................................................................................. 49 Example ............................................................................................................................................. 49 iii 1. Guice – Overview Guice is an open source, Java-based dependency injection framework. It is lightweight and is developed as well as managed by Google. This chapter will give you an overview of Guice framework. Dependency Injection Any Java-based application contains objects that work together to present what the end- user sees as a final working application. When writing a complex Java application, application classes should be independent of other Java classes as much possible to increase their reusability. This also makes them independent of other classes while unit testing. Dependency Injection, also termed as wiring, helps in gluing these classes together and at the same time keeping them independent. Consider you have an application which has a text editor component and you want to provide a spell check. Your standard code would look something like this − public class TextEditor { private SpellChecker spellChecker; public TextEditor() { spellChecker = new SpellChecker(); } } Note that here we have created a dependency between the TextEditor and the SpellChecker. In an inversion of control scenario, we would instead do something like this − public class TextEditor { private SpellChecker spellChecker; @Inject public TextEditor(SpellChecker spellChecker) { this.spellChecker = spellChecker; } } Here, the TextEditor is not concerned about SpellChecker implementation. The SpellChecker will be implemented independently and will be provided to the TextEditor at the time of TextEditor instantiation. 1 Google Guice Dependency Injection using Guice (Binding) Dependency Injection is controlled by the Guice Bindings. Guice uses bindings to map object types to their actual implementations. A module is a collection of bindings as shown below − public class TextEditorModule extends AbstractModule { @Override protected void configure() { /* * Bind SpellChecker binding to WinWordSpellChecker implementation * whenever spellChecker dependency is used. */ bind(SpellChecker.class).to(WinWordSpellChecker.class); } } An injector is the object-graph builder and a Module is its core building block. Thus, the first step is to create an injector and then use the injector to get the objects. public static void main(String[] args) { /* * Guice.createInjector() takes Modules, and returns a new Injector * instance.