guice README

The project's README from github.com/google/guice. As one markdown file: README.md.

Guice

Overview

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. 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 not a kitchen sink. We justify each feature with at least three use cases. When in doubt, we leave it out. We build general functionality which enables you to extend Guice rather than adding every feature to the core framework.

Guice aims to make development and debugging easier and faster, not harder and slower. In that vein, Guice steers clear of surprises and magic. You should be able to understand code with or without tools, though tools can make things even easier. When errors do occur, Guice goes the extra mile to generate helpful messages.

For an introduction to Guice and a comparison to new and the factory pattern, see Bob Lee's video presentation. After that, check out our user's guide.

We've been running Guice in mission critical applications since 2006, and now you can, too. We hope you enjoy it as much as we do.

Installation Instructions

Guice Core (Maven)

<dependency>
  <groupId>com.google.inject</groupId>
  <artifactId>guice</artifactId>
  <!-- {version} can be 6.0.0, 7.0.0, etc. -->
  <version>{version}</version>
</dependency>

Guice Extension (Maven)

<dependency>
  <groupId>com.google.inject.extensions</groupId>
  <!-- {extension-name} can be one of: assistedinject, dagger-adapter,
       grapher, jmx, jndi, persist, spring, testlib or throwingproviders -->
  <artifactId>guice-{extension-name}</artifactId>
  <!-- {version} must match the guice core version. -->
  <version>{version}</version>
</dependency>

See Maven Central for more details, including snippets for other build systems such as Gradle, Ivy, sbt, and more.


jolt award

guice (google/guice)

Searching Database…

12.7K ·GitHub
What is this?Guice is a lightweight dependency injection framework for Java 11 and above, made by Google, that removes the need for factories and manual 'new' calls in your code.
Is it a framework or a library?It's a library/framework you add to your Java project's build; it provides annotations like @Inject and modules you configure, not a standalone app.
How do I add it to a project?Add the Guice Core artifact (and any extension you need) from Maven Central to your build file; snippets are provided for Maven, Gradle, Ivy, sbt, and others.
Do I need a specific Java version?Yes, Guice requires Java 11 or above.
What's the difference between the 6.0.0 and 7.0.0 releases?6.0.0 and 7.0.0 are functionally equivalent except for which injection API they support: 6.0.0 mostly supports the old javax.inject/servlet/persistence namespace, while 7.0.0 supports the newer jakarta.inject/servlet/persistence namespace.
How long has Guice been in production use?Google says it has been running Guice in mission-critical applications since 2006.
Does Guice try to do everything, or stay minimal?Guice deliberately stays minimal: the maintainers require at least three use cases to justify any new feature, and build general extension points rather than bloating the core.
Where can I learn how to use Guice beyond the README?There's a User Guide plus javadocs for the 6.0.0, 7.0.0 and latest snapshot releases, and a video presentation by Bob Lee introducing Guice and comparing it to plain 'new' and the factory pattern.
Creator
google
Size
122.4 MB
Stars
12.7K
Age
12y
Commits · 90 Days