@SuppressWarnings({ "unchecked", "rawtypes" })
	@Override
	protected void configure() {
		long start = System.currentTimeMillis();
		classList = AnnotationClassScanner.scan(AutoBind.class);
		for (Class<?> one : classList) {
			// 如果有这个注解，直接跳过.
			if (has(one, NoBind.class)) {
				continue;
			}
			// 不是接口的才一起玩.
			if (!one.isInterface()) {
				try {
					Class temp = one;
					if (one.getInterfaces().length > 0) {
						// 只获取第一个接口.
						Class interfaceClass = one.getInterfaces()[0];
						Annotation named = temp.getAnnotation(Named.class);
						if (named == null) {
							named = temp
									.getAnnotation(javax.inject.Named.class);
						}
						if (named != null) {
							bind(interfaceClass).annotatedWith(named).to(temp);
							LOG.debug(
									"auto bind '{}' annotated with '{}' to '{}'",
									interfaceClass.getName(), named,
									temp.getName());
						} else {
							bind(interfaceClass).to(temp);
							LOG.debug("auto bind '{}' to '{}'",
									interfaceClass.getName(), temp.getName());
						}
					}
				} catch (Exception e) {
					LOG.error("auto bind error . class:'{}'", one, e);
				}
			}
		}
		LOG.debug("init AutoBindingModule take:{}ms",
				(System.currentTimeMillis() - start));
	}