public ResourceAnnotationApplicationContext(ConfigurableApplicationContext parent, Object... resources) { helper = new ApplicationContextHelper(parent, this, resources) { @Override protected String generateId(Object... configs) { if (allObjectsOfType(configs, Class.class)) { Class<?>[] types = Arrays.copyOfRange(configs, 0, configs.length, Class[].class); List<String> names = new ArrayList<String>(); for (Class<?> type : types) { names.add(type.getName()); } return StringUtils.collectionToCommaDelimitedString(names); } else { return Arrays.toString(configs); } } @Override protected void loadConfiguration(Object... configs) { if (allObjectsOfType(configs, Class.class)) { Class<?>[] types = Arrays.copyOfRange(configs, 0, configs.length, Class[].class); register(types); } else { String[] pkgs = Arrays.copyOfRange(configs, 0, configs.length, String[].class); scan(pkgs); } } }; refresh(); }