protected final void initAppContext(final ServletContext sc,
final Map<String, String> initParams,
final Consumer<ServletBeanFactory> callback) throws ServletException {
this.servletContext = sc;
if(sc.getAttribute(AppContext.APP_CONTEXT_ATTRIBUTE) != null){
throw new ServletException("AppContext already initialized for the given servlet context '" + sc.getContextPath() + "'");
}
AppContext.removeCurrent();
AppContextInitializer.initExternal(
sc,
Strings.isEmpty(sc.getContextPath()) ? "" : Paths.prefixWithoutSlash(sc.getContextPath()),
(config) -> {
onAppConfigReady(config, initParams);
beanFactory = new ServletBeanFactory(config, null);
if (null != callback) {
callback.accept(beanFactory);
}
return beanFactory;
},