下面列出了怎么用com.google.inject.internal.UniqueAnnotations的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
protected final void configure()
{
internalConfigure();
configureServlets();
for ( FilterDefinition filterDefinition : filterDefinitions )
{
bind(FilterDefinition.class).annotatedWith(UniqueAnnotations.create()).toInstance(filterDefinition);
}
for ( ServletDefinition servletDefinition : servletDefinitions )
{
bind(ServletDefinition.class).annotatedWith(UniqueAnnotations.create()).toInstance(servletDefinition);
}
}
protected <T extends HttpServlet> ServletBindingBuilder bindServlet(Class<T> servlet)
{
Annotation annotation = UniqueAnnotations.create();
Key<T> servletKey = Key.get(servlet, UniqueAnnotations.create());
binder().bind(servletKey).to(servlet).in(Scopes.SINGLETON);
return new ServletBindingBuilder(binder(), servletKey);
}
@SuppressWarnings("unchecked")
public ApplicationBindingBuilder addResources(Class<?>... annotatedClass)
{
for (Class<?> clazz : annotatedClass) {
Key<Object> key = Key.get((Class<Object>) clazz, UniqueAnnotations.create());
binder.bind(key).to(clazz);
initializer.addResource(key, clazz);
}
return this;
}
@SuppressWarnings("unchecked")
public <T> ApplicationBindingBuilder addResources(Class<T> annotatedClass, Provider<? extends T> resourceProvider)
{
Key<T> key = Key.get(annotatedClass, UniqueAnnotations.create());
binder.bind(key).toProvider(resourceProvider);
initializer.addResource((Key<Object>) key, annotatedClass);
return this;
}
@SuppressWarnings("unchecked")
public ApplicationBindingBuilder addProvider(Class<?> annotatedClass)
{
Key<Object> key = Key.get((Class<Object>) annotatedClass, UniqueAnnotations.create());
binder.bind(key).to(annotatedClass);
initializer.addProvider(key);
return this;
}
@SuppressWarnings("unchecked")
public ApplicationBindingBuilder addProviderInstance(Object object)
{
Key<Object> key = Key.get((Class<Object>) object.getClass(), UniqueAnnotations.create());
binder.bind(key).toInstance(object);
initializer.addProvider(key);
return this;
}
@SuppressWarnings("unchecked")
public <T> ApplicationBindingBuilder addProvider(Class<T> annotatedClass, Provider<? extends T> providerProvider)
{
Key<T> key = Key.get(annotatedClass, UniqueAnnotations.create());
binder.bind(key).toProvider(providerProvider);
initializer.addProvider((Key<Object>) key);
return this;
}
@SuppressWarnings("unchecked")
public <T> ApplicationBindingBuilder addProvider(Class<T> annotatedClass, Class<? extends Provider<? extends T>> providerProvider)
{
Key<T> key = Key.get(annotatedClass, UniqueAnnotations.create());
binder.bind(key).toProvider(providerProvider);
initializer.addProvider((Key<Object>) key);
return this;
}
@Override
public BindingDeclaration visit(final InstanceBinding binding) {
// Filter extension bindings, for example created for filter. Such bindings are marker as @Internal
final Class annotationType = binding.getKey().getAnnotationType();
if (annotationType != null && annotationType.getDeclaringClass() != null
&& annotationType.getDeclaringClass().equals(UniqueAnnotations.class)) {
return null;
}
final BindingDeclaration res = new BindingDeclaration(DeclarationType.Instance, binding);
res.setKey(binding.getKey());
return res;
}
public void through(Filter filter, Map<String, String> initParams)
{
Key<Filter> filterKey = Key.get(Filter.class, UniqueAnnotations.create());
module.add(filterKey, filter);
through(filterKey, initParams, filter);
}
public void with(HttpServlet servlet, Map<String, String> initParams)
{
Key<HttpServlet> servletKey = Key.get(HttpServlet.class, UniqueAnnotations.create());
module.add(servletKey, servlet);
with(servletKey, initParams, servlet);
}
AbstractServletBindingBuilder(Binder binder, Initializer initializer)
{
this.initializer = initializer;
binder.bind(GuiceRsServletInitializer.class).annotatedWith(UniqueAnnotations.create()).toInstance(initializer);
}