guice | lightweight dependency injection framework for Java | Dependency Injection library

 by   google Java Version: 7.0.0 License: Apache-2.0

kandi X-RAY | guice Summary

kandi X-RAY | guice Summary

guice is a Java library typically used in Programming Style, Dependency Injection applications. guice has no bugs, it has no vulnerabilities, it has build file available, it has a Permissive License and it has high support. You can download it from GitHub, Maven.

documentation: [user guide] [latest javadocs] [5.1.0 javadocs] continuous integration: [build status] mailing lists: [user mailing list] . put simply, guice alleviates the need for factories and the use of new in your java code. think of guice’s @inject as the new new. you will still need to write factories in some cases, but your code will not depend directly on them. your code will be easier to change, unit test and reuse in other contexts. guice embraces java’s type safe nature, especially when it comes to features introduced in java 5 such as generics and annotations. you might think of guice as filling in missing features for core java. ideally, the language itself would provide most of the same features, but until such a language comes along, we have guice. guice helps you design better apis, and the guice api itself sets a good example. guice is

            kandi-support Support

              guice has a highly active ecosystem.
              It has 11996 star(s) with 1645 fork(s). There are 540 watchers for this library.
              There were 5 major release(s) in the last 12 months.
              There are 304 open issues and 856 have been closed. On average issues are closed in 1744 days. There are no pull requests.
              It has a positive sentiment in the developer community.
              The latest version of guice is 7.0.0

            kandi-Quality Quality

              guice has 0 bugs and 0 code smells.

            kandi-Security Security

              guice has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              guice code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              guice is licensed under the Apache-2.0 License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              guice releases are available to install and integrate.
              Deployable package is available in Maven.
              Build file is available. You can build the component from source.
              guice saves you 186572 person hours of effort in developing the same functionality from scratch.
              It has 74380 lines of code, 6309 functions and 647 files.
              It has low code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi has reviewed guice and discovered the below as its top functions. This is intended to give you an instant insight into guice implemented functionality, and help decide if they suit your requirements.
            • Returns a scope using the specified key .
            • Get the injection points for a type .
            • Collects all declared methods for the given type .
            • Validates the given interface .
            • Handle the request .
            • Creates mapping between constructors and constructors .
            • Prepare the built - in converters .
            • Build trie .
            • Finds the appropriate injection point for a constructor .
            • Returns suggestions for the given key .
            Get all kandi verified functions for this library.

            guice Key Features

            No Key Features are available at this moment for guice.

            guice Examples and Code Snippets

            Find all classes using the Google guice
            javadot img1Lines of Code : 9dot img1License : Permissive (MIT License)
            copy iconCopy
            public Set findAllClassesUsingGoogleGuice(String packageName) throws IOException {
                    return ClassPath.from(ClassLoader.getSystemClassLoader())
                        .filter(clazz -> clazz.getPackageNa  
            Guice - Binding classes from resource producer
            Lines of Code : 53dot img2License : Strong Copyleft (CC BY-SA 4.0)
            copy iconCopy
            Is there a JSR-330 equivalent of Spring's @Bean or Guice's @Provides annotation?
            Javadot img3Lines of Code : 9dot img3License : Strong Copyleft (CC BY-SA 4.0)
            copy iconCopy
            JSR-330      Spring                Guice
            ----------   -------------------   ------------------
            @Inject      @Autowired            @Inject
            @Named       @Component            @Named
            @Qualifier   @Qualifier            @BindingAnnotation
            How to dynamically create instances of a class based upon their annotation value?
            Javadot img4Lines of Code : 12dot img4License : Strong Copyleft (CC BY-SA 4.0)
            copy iconCopy
            // code in some Guice module configure() method
            SomeConfig config = loadConfig(); // I invented this config code. Adapt!
            MapBinder mapbinder
                 = MapBinder.newMapBinder(binder(), String.class, Job.class);
            for(String name : config
            Inheriting annotation for AOP in GUICE
            Javadot img5Lines of Code : 104dot img5License : Strong Copyleft (CC BY-SA 4.0)
            copy iconCopy
            // the configure override of a Guice Abstract Module
            protected void configure() {
                  // an instance of the matcher looking for HTTP methods
                  new HasOrInheritsAnnotation(GET.class, PATCH.class, PUT
            Guice. How to inject different objects in a field of parent class?
            Javadot img6Lines of Code : 66dot img6License : Strong Copyleft (CC BY-SA 4.0)
            copy iconCopy
            @interface MyServiceInject {
            static abstract class Base {
                protected MyService myService;
            static class ClassBasedMyServiceInjectionListener i
            Not able to throw exception for @override method
            Javadot img7Lines of Code : 26dot img7License : Strong Copyleft (CC BY-SA 4.0)
            copy iconCopy
            try (InputStream in = new FileInputStream(System.getProperty("user.dir")+"/src/properties/")) {
               Properties props = new Properties();
                Names.bindProperties(binder(), props);
            } catch (IOException e
            play framework in an sbt subproject - no applicaton loader defined
            Lines of Code : 15dot img8License : Strong Copyleft (CC BY-SA 4.0)
            copy iconCopy
            import sbt._
            import play.sbt.PlayImport._
            object Dependencies {
              val play: Seq[ModuleID] = Seq(
            lazy val api = project
                libraryDependencies ++= Dependen
            Remove JAR from Spark default classpath in EMR
            Lines of Code : 19dot img9License : Strong Copyleft (CC BY-SA 4.0)
            copy iconCopy
            export latestguicejar='your path to latest guice jar'
                # build all other dependent jars in OTHER_JARS
            JARS=`find /usr/lib/spark/jars/ -name '*.jar'`
               for eachjarinlib in $JARS ; do    
            if [ "$eachjarinlib"
            No application loader is configured
            Javadot img10Lines of Code : 4dot img10License : Strong Copyleft (CC BY-SA 4.0)
            copy iconCopy
            libraryDependencies += guice 
             $sbt run

            Community Discussions


            Create MessageDigest with Guice
            Asked 2022-Mar-25 at 18:00

            I'm trying to find a way to initialize MessageDigest with Guice. Currently I have this:



            Answered 2022-Mar-25 at 18:00


            I did not know MessageDigest is a single use class. You showed an injection of that class, which by definition cannot provide multiple instances. So the question is flawed.

            You must fix the problem by binding a factory function that creates an MD rather than the MD itself. E.g. a Supplier:



            Spring Boot Logging to a File
            Asked 2022-Feb-16 at 14:49

            In my application config i have defined the following properties:



            Answered 2022-Feb-16 at 13:12

            Acording to this answer: tomcat falls back to default logging if it can resolve the location

            Can you try to save the properties without the spaces.

            Like this:



            Java : io.protostuff.compiler.parser.ParserException: Can not load proto
            Asked 2022-Feb-04 at 02:45

            I am using guice parser to parse proto file. It is not able to resolve imports. Any suggestions experts in how to resolve imports public as well as imports within same project ?

            Proto file



            Answered 2022-Feb-04 at 02:45

            Let's consider the 3.1.38 version of the io.protostuff:protostuff-parser library as the current version.


            It is necessary to use the FileReaderFactory and FileReader interfaces to get the «Include directories» support.

            The solution is inspired by: protostuff-compiler/ at v3.1.38 · protostuff/protostuff-compiler.

            Example program

            Let's assume the /some/directory/imports directory is used for the imports.



            OWL API NoSuchMethodError in saveOntology() call
            Asked 2022-Jan-31 at 10:43

            I am trying to call an OWL API java program through terminal and it crashes, while the exact same code is running ok when I run it in IntelliJ.

            The exception that rises in my main code is this:



            Answered 2022-Jan-31 at 10:43

            As can be seen in the comments of the post, my problem is fixed, so I thought I'd collect a closing answer here to not leave the post pending.

            The actual solution: As explained here nicely by @UninformedUser, the issue was that I had conflicting maven package versions in my dependencies. Bringing everything in sync with each other solved the issue.

            Incidental solution: As I wrote in the comments above, specifically defining 3.3.0 for the maven-assembly-plugin happened to solve the issue. But this was only chance, as explained here by @Ignazio, just because the order of "assembling" things changed, overwriting the conflicting package.

            Huge thanks to both for the help.



            Gerrit fails to start the service
            Asked 2021-Dec-23 at 11:26




            Answered 2021-Dec-23 at 11:26

            Found that MYSQL upgraded to 5.7.36 from 5.7.32 version and due to this gerrit service was not starting and failing with above errors.

            Solved by replacing existing mysql-connector-java-5.1.43.jar with recent mysql-connector-java-5.1.49.jar in gerrit.



            AroundInvoke: Curious name?
            Asked 2021-Nov-09 at 17:51

            Request more information on this interceptor annotation. Why is the interceptor annotation called @AroundInvoke and not @BeforeInvoke?

            Can I for example invoke an access verification before an action API? What is the guarantee that the Access Verification is completed before the method is actually invoked? Is there something that the VM or the CDI implementation do that does not prevent the actual invocation but execute this interceptor in parallel?

            If I were using the Google Guice AOP Method Interceptors, I am assured that the Access Verification failure will determine whether or not the method invocation BEGINS. How can I assure myself of a similar behavior from the jakarta CDI?

            Have not been able to find this information in the spec

            A related question can be found here. But the exact questions above remain unanswered.



            Answered 2021-Nov-09 at 17:51

            @AroundInvoke is called that because it can act both before and after the actually invoked method. Look at the documentation and its sample:



            Guice generic type injection
            Asked 2021-Nov-05 at 13:26

            Lets say I have a generic class as follows:



            Answered 2021-Nov-05 at 13:26

            No, it is not possible to achieve this in a way you are trying to.

            But you could pass Class/Type object to Base's constructor and use it to create needed type literal, e.g. (I use Set as key since you mentioned multibinder):



            How to Manage JNDI Context In JUnit Tests?
            Asked 2021-Oct-26 at 15:51

            I'm currently working on writing some tests for a java EE project that uses guice for dependency injection. Dealing with the entity manager and it's datasource has been giving me no end of trouble. I have tried multiple different approaches and they all seem to have a fatal flaw somewhere. I can't seem to figure out how to work with InitialContext without it cross contaminating my tests.

            My first attempt was to manually bind the datasource into the context in the guice provider method for my datasource. Something like:



            Answered 2021-Oct-26 at 15:51

            In the process of researching another idea for this problem, I finally found a partial solution here: Junit Testing JNDI InitialContext outside the application server

            The key insight was being able to 'reset' the context between tests. Once I had that working, I was able to cleanup my context between tests. Doing that removed the need for mocking out the Context; I could use a real implementation and be confident about the state it was in at the start of each test.

            The finished version of the test module ended up looking like this:



            Save HAR file without browsermodproxy
            Asked 2021-Sep-16 at 07:44

            I am using browsermobproxy and getting lots of errors that I don't want to deal with.

            Is there a way to get a site's HAR file without using browsermobproxy?

            If anyone's interested, here's the error I get from server.log



            Answered 2021-Sep-16 at 07:44

            I believe you are running your browsermob proxy under the latest version of JRE. Since version 16 there are some limitation introduced to the refelction mechanism that make the code that used to work in previous versions not working any more.

            So the easiest solution would be downgrade your JRE. According to this thread, JRE 11 would work for you.



            Wire collection of objects dynamically in Guice
            Asked 2021-Sep-02 at 04:24

            Guice newbie here, with a complicated scenario.

            My company has a large number of constants of a given type (let's call them Thingy) that belong to different teams and are maintained in different parts of our application. However, we need to have a central registry that knows about all of them (let's call this the ThingyService). I am writing a base module that teams can either extend or install, with the purpose of allowing a team to register their Thingys, and giving them access to the ThingyService. This module takes as parameter a list of classes from which I can extract the Thingy constants, this part is working fine.

            What I don't understand is how I can a) make each module know about each other module's list of Thingys and b) how I can create my ThingyService as a singleton that contains all of my Thingys. I have experimented with shared static state and with ThreadLocals, but I keep either breaking tests or breaking my main (play) application. In my naive understanding of Guice, I think I need a MultiBinder for the Thingys, but I don't see how I can share that between modules. Here's what I'd like to do:



            Answered 2021-Sep-02 at 04:24

            It turns out I omitted one important detail, Thingy has a type parameter, it's actually Thingy, and that's the reason it didn't work before. By cheating and registering Thingy as raw type, and then also injecting it as raw type, I got it to work.

            Here is a complete working example using JUnit 5 and AssertJ:


            Community Discussions, Code Snippets contain sources that include Stack Exchange Network


            No vulnerabilities reported

            Install guice

            You can download it from GitHub, Maven.
            You can use guice like any standard Java library. Please include the the jar files in your classpath. You can also use any IDE and you can run and debug the guice component as you would do with any other Java program. Best practice is to use a build tool that supports dependency management such as Maven or Gradle. For Maven installation, please refer For Gradle installation, please refer .


            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
          • HTTPS


          • CLI

            gh repo clone google/guice

          • sshUrl


          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Consider Popular Dependency Injection Libraries


            by golang


            by google


            by inversify


            by square


            by google

            Try Top Libraries by google


            by googleJava


            by googleJavaScript


            by googleHTML


            by googleC++