Spring MVCは、HandlerMapping、ViewResolverなどのデフォルトのオブジェクトを作成します。
デフォルトで作成されるこれらのBeanが構成されている構成ファイルはどこにありますか?(私は私たちが提供する設定ファイルについて話していません)。
上記のオブジェクトのデフォルトの実装を作成するためにSpringが使用するデフォルトの構成はどこに保存されていますか?
Spring MVCは、HandlerMapping、ViewResolverなどのデフォルトのオブジェクトを作成します。
デフォルトで作成されるこれらのBeanが構成されている構成ファイルはどこにありますか?(私は私たちが提供する設定ファイルについて話していません)。
上記のオブジェクトのデフォルトの実装を作成するためにSpringが使用するデフォルトの構成はどこに保存されていますか?
のようなものを指定すると、SpringMVCによって作成されるデフォルトのhandlerMapping、バリデーターについて質問していると想定しています<mvc:annotation-driven>
。
これは基本的にmvcと呼ばれるカスタムSpring名前空間であり、このカスタム名前空間はMvcNamespaceHandlerによって処理されます。このクラスのソースを見ると、これは関連するコンテンツの一部です。
registerBeanDefinitionParser("annotation-driven", new AnnotationDrivenBeanDefinitionParser());
registerBeanDefinitionParser("default-servlet-handler", new DefaultServletHandlerBeanDefinitionParser());
registerBeanDefinitionParser("interceptors", new InterceptorsBeanDefinitionParser());
registerBeanDefinitionParser("resources", new ResourcesBeanDefinitionParser());
registerBeanDefinitionParser("view-controller", new ViewControllerBeanDefinitionParser());
これは基本的に、見つかったタグに基づいて一連のパーサーを登録するため、その上に名前空間のタグのAnnotationDrivenBeanDefinitionParserを登録します。annotation-driven
mvc
デフォルトが登録されるのはここです。
たとえば、handlerMappingは次のように登録されます。
RootBeanDefinition methodMappingDef = new RootBeanDefinition(RequestMappingHandlerMapping.class);
methodMappingDef.setSource(source);
methodMappingDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
methodMappingDef.getPropertyValues().add("order", 0);
String methodMappingName = parserContext.getReaderContext().registerWithGeneratedName(methodMappingDef);
同じ行に沿って、他のコンポーネントが登録されます。したがって、本質的に、構成はコードを介して異なるAnnotationDrivenBeanDefinitionParsersにあり、特定の構成ファイルにはありません。