类中【标注】学习
标注是在
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
所示。
代码3 Singleton标注
package sunyang;
import com.google.inject.Singleton;
@Singleton
public class SunyangImpl implements Sunyang {
public void print() {
System.out.println("技术凝聚实力,专业创造辉煌");
}
}
这段代码中用
@Singleton
标注声明了
SunyangImpl
对
Sunyang
的实现作用于一个单例。
1.7 @Named标注
@Named
标注作用于成员变量或者方法的参数
,
可以通过
Binder
的
annotatedWith
方法将其得到。
1.8 @RequestParameters标注
@RequestParameters
用来控制
HTTP
请求为
Map
类型参数或者字段的注入。
1.9 @RequestScoped标注
想要获得当前请求的实例必须将
@RequestScoped
标注在执行类中声明。
1.10 @SessionScoped标注
想要获得当前会话的实例必须将
@SessionScoped
标注在执行类中声明。