1. What is Guice?
Guice is a lightweight, Google-developed, Dependency Injection Framework (IOC) based on JAVA5, which mainly uses generics and annotation features. Guice is very small and fast. Guice is type-safe and can be injected into constructors, properties, methods (arbitrary methods that contain arbitrary arguments, not just setter methods).
2. Comparison of Guice and spring
A bit like spring, Guice is also a dependency injection framework that uses annotations primarily to complete dependency injection, rather than using XML primarily as spring (although annotations can be used, but XML is also configured as an integral part of spring). The Guice feature is lightweight enough to use Guice is a good choice for applications where performance requirements (including startup speed, run time, etc.) are high, and the Guice relies on a small number of jar packages, which is a bit easier for project management. Disadvantages are: The Guice function is not strong enough, as the enterprise-level framework in the functional or slightly weaker, the code is more intrusive, the dependency relationship is not as intuitive as the XML description (this is of course for those who are accustomed to XML as a description of the person, you may be used to annotate the way, this varies )。
3. Download the jar Package
Download the jar package https://code.google.com/p/google-guice/, or maven dependency, to load the Guice required jar package into the project in use:
Maven Dependency Example:
< dependency >
< groupId >com.jolira</ groupId > < artifactId >guice</ artifactId > < version >3.0.0</ version >
4. Package Dependency
Description: Javax.inject-1.jar is required to meet the Java Dependency Injection Standard (JSR-330), Cglib and ASM are the jar packages required for AOP, and Aopalliance is an AOP Java interface package.
5, HelloWorld
package com.guice.test2;< Span class= "Hljs-keyword" >import com.google.inject.ImplementedBy; /** * TODO: Using guice provided annotations, Implementedby, means that the interface is implemented by the Helloguiceimpl class so that we can not manually configure dependencies * *< Span class= "Hljs-javadoctag" > @author E468380 */ @ImplementedBy ( Helloguiceimpl.class) public interface helloguice { public void sayhello ();}
package com.guice.test2;< Span class= "Hljs-keyword" >public class helloguiceimpl implements Helloguice { @Override public void sayhello () {System.out.println (
"Hello Guice!" );}
package com.guice.test2;import org.junit.Test;import com.google.inject.Guice;import com.google.inject.Injector;/** * TODO : 在这里我们不需要再new一个module,Guice会根据我们提供的注解自己来配置依赖关系 * * @author E468380 */publicclass TestGuice { @Test publicvoidtestHelloGuice() { Injector injector = Guice.createInjector(); HelloGuice helloGuice = injector.getInstance(HelloGuice.class); helloGuice.sayHello(); }}
Output Result:
Hello Guice!
Preliminary study on Guice (i.)