标注是在JDK 1.5以后提出的概念,Guice的标注不仅本身支持依赖注入,而且对自定义注解、用户自定义Bean作用域都提供了很好的支持。以下就是Guice用到的所有标注。
1.1  @BindingAnnotation标注
当我们新建绑定标注时需要使用@BindingAnnotation进行声明,如代码1所示。代码1 newAnnotation.java
@Retention(RUNTIME)
@Target({ FIELD, PARAMETER })
@BindingAnnotation
public @interface newAnnotation {}
在这段代码中新建一个标注,这个标注会在编译时一起编译,可以作用的对象是参数和字段,然后用@BindingAnnotation设置这个标注,用于进行绑定。

1.2  @ImplementedBy标注

@ImplementedBy标注是用来声明当前接口支持的实现类,如代码12-8所示。
代码2 ImplementedBy标注
@ImplementedBy(SunyangImpl.class)
public interface Sunyang {}
在这段代码中@ImplementedBy标注设置了Sunyang接口支持的实现类为SunyangImpl

1.3  @Inject标注

@Inject标注作用是依赖注入它根据作用的对象不同分为setter方法注入、构造方法注入、字段注入可以根据实际情况来选择。@Inject标注通过optional参数来定义注入的接口是否需要注入的实现类,默认情况必须显示声明注入接口的实现类。具体使用在下文中介绍。

1.4  @ProvidedBy标注

@ProvidedBy 标注,用来定位并实例化提供者类,并用它获取想要的对象。否则实例化类型本身。

1.5  @ScopeAnnotation标注

@ScopeAnnotation标注,用于指定作用域的标注必须有一个 @ScopeAnnotation标注,一个类只能使用一个此类标注。

1.6  @Singleton标注

@Singleton标注作用于一个接口实现类上,声明这个实现类作用于一个单例,如代码3所示。
代码 Singleton标注
package sunyang;
 
import com.google.inject.Singleton;
@Singleton
public class SunyangImpl implements Sunyang {
         public void print() {
                  System.out.println("技术凝聚实力,专业创造辉煌");
         }
}
这段代码中用@Singleton标注声明了SunyangImplSunyang的实现作用于一个单例。

1.7  @Named标注

@Named标注作用于成员变量或者方法的参数可以通过BinderannotatedWith方法将其得到。

1.8  @RequestParameters标注

@RequestParameters用来控制HTTP请求为Map类型参数或者字段的注入。

1.9  @RequestScoped标注

想要获得当前请求的实例必须将@RequestScoped标注在执行类中声明。

1.10  @SessionScoped标注

想要获得当前会话的实例必须将@SessionScoped标注在执行类中声明。