私のアプリケーションには2つのイニシャライザがあります:1つはAbstractSecurityWebApplicationInitializer
、もう1つはAbstractAnnotationConfigDispatcherServletInitializer
です。アプリケーションを実行しようとすると、私はIllegalStateException: Cannot initialize context because there is already a root application context present
IllegalStateException:既にルートアプリケーションコンテキストが存在するため、コンテキストを初期化できません
私は正しく理解して、両方のイニシャライザは、独自のWebApplicationContext
を作成しようとしました。そこで、createRootApplicationContext()
を無効にしてnullを返すようにしました。アプリケーションは例外なく実行されましたが、正しく実行されませんでした。これを回避する方法はありますか?
WebInitializer.java
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { WebConfig.class, AppConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] { RepositoryConfig.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
SecurityWebApplicationInitializer
import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;
public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer {
public SecurityWebApplicationInitializer() {
super(SecurityConfig.class);
}
}
あなたのリポジトリ設定( 'RepositoryConfig.class')は' getRootConfigClasses'の中で 'getServletConfigClasses'の中になければなりません。 – kukkuz
@kukkuzは動作しません、同じ例外 –