Perguntas comuns da entrevista do Spring MVC

Em um aplicativo Web baseado na estrutura do Spring, como o arquivo de configuração de contexto do aplicativo do Spring é applicationgContext.xmlcarregado automaticamente?

Ao executar um projeto da Web, o servidor de aplicativos (JBoss, Tomcat etc.) primeiro lê o web.xmlarquivo no caminho do código-fonte do projeto , analisa a configuração e encontra a configuração ContextLoaderListener, para que ContextLoaderListenero contextInitializedmétodo na classe seja executado e o método será chamado neste initWebApplicationContext()método De acordo com o nome do método, podemos ver que esse método é usado para inicializar um WebApplicationContext. O entendimento simples é inicializar um contêiner Spring em um aplicativo Web. Na initWebApplicationContext()implementação do código subsequente do método, o arquivo especificado será carregado de acordo web.xmlcom as contextConfigLocationpropriedades configuradas no método applicationContext.xmle o contêiner Spring será inicializado de acordo com este arquivo.

Se não web.xmlhouver contextConfigLocationparâmetros de configuração , o applicationgContext.xmlarquivo não pode ser carregado ?

Se não houver contextConfigLocationparâmetros de configuração , o aplicativo procurará o /WEB-INF/applicationContext.xmlarquivo no diretório raiz do aplicativo por padrão , ou seja, este é um caminho do arquivo carregado por padrão.

Após a conclusão da inicialização do WebApplicationContext nesse aplicativo Web, o que isso tem a ver com ServletContext?

No initWebApplicationContextinterior do método de inicialização irá contextpoupar a ServletContext, em particular, é mantido para um Mapatributo tipo, keyé WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, valueé um exemplo específico de um WebApplicationContext objecto.

Se você deseja ServletContextincluir isso no código WebApplicationContext, como fazer isso?

A estrutura Spring fornece uma WebApplicationContextUtilsclasse de ferramenta, que getWebApplicationContextpode ser obtida através do método dessa classe de ferramenta .

Agora ServletContext, para que é usado?

ServletContextAlguns métodos são definidos para facilitar a comunicação Servletcom o Servletcontêiner. Em um aplicativo Web, todos Servletsão comuns ServletContext. Quando o Spring é usado em conjunto com um aplicativo Web, o contêiner Spring é armazenado ServletContextnele. Em termos leigos, é ApplicationContextarmazenado em um ServletContextcontêiner. Em uma propriedade Map.

Não tinha que entender web.xmlna Listener, Filtere Servletordem de inicialização é?

Primeiro, <listener>instancie a classe de ouvinte declarada com o rótulo, chame o método do objeto de instância de classe de ouvinte contextInitialized(), inicialize os dados de contexto do aplicativo, <filter>instale a classe de filtro declarada com o rótulo e chame o método do objeto de instância de classe de filtro init(); Se uma <servlet>tag é usada na <load-on-startup>tag, ela é Servletinstanciada na ordem do menor para o maior valor , e o init()método correspondente é chamado .

Falando nisso Servlet, DispatcherServletalguém no Spring MVC sabia? Conte-me sobre seu princípio de implementação?

DispatcherServletÉ o principal distribuidor do SpringMVC, implementa a distribuição de solicitações e é o ponto de entrada para o processamento de solicitações. É um Servlet. Quando o aplicativo é iniciado, a DispatcherServletinicialização executa o initmétodo. DispatcherServletO initmétodo encontrado no código-fonte é herdado HttpServletBean. Nesse método de inicialização, um WebApplicationContextobjeto será instanciado e a inicializada será contextarmazenada ServletContextnele Servletpara associar-se ao contêiner Spring. DispatcherServletNo onRefreshmétodo, inicializar várias estratégias de solicitação de processamento, tais como o upload de arquivos Políticas, estratégia URL processamento de solicitação, visualizar a estratégia de processo de mapeamento, as estratégias de tratamento de exceções, a maioria da implementação destas estratégias são uma lógica iniciar WebApplicationContexta busca, não conseguiu encontrar No caso de recarregar , as várias estratégias no DispatcherServletmesmo diretório DispatcherServlet.properties, como inicialização HandlerMapping, registro de várias estratégias de processamento de solicitação e classes de processamento.

Especificamente, como funciona a DispatcherServletdistribuição de solicitações?

Primeiro, a estrutura Spring MVC percorre todos os beans no contêiner Spring quando é iniciada, percorre os métodos na classe anotada @Controllerou @RequestMappinganotada, @RequestMappingmescla os valores da anotação na classe e no método e usa @RequestMappingos valores relevantes dos parâmetros da anotação (como value, por exemplo , methodetc.) um pacote RequestMappingInfo, este Controllerexemplo, o método e o método de parâmetros (tipo, as notas, etc.) para dentro da embalagem HandlerMethod, e, em seguida, para RequestMappingInfoque key, HandlerMethodpara valuemanter a um de Mapuma estrutura de handlerMethodsa.

Em seguida, a @RequestMappinganotação de value(isto é, um pedido caminho) valores tomados, que é url, em seguida, urla keyfim RequestMappingInfode value, em um depósito de Mapuma estrutura do urlMapimóvel.

Quando o cliente envia um pedido, em conformidade com um pedido URLpara urlMapencontrar, localizar RequestMappingInfo, e, em seguida, de acordo RequestMappingInfocom a handlerMethodspesquisa, para pesquisar o correspondente HandlerMethod, em seguida HandlerMethodencapsulado HandlerExecutionChain; então percorrer todos os recipientes HandlerAdapterclasse de implementação, encontrar apoiar este pedido HandlerAdapter, tais como RequestMappingHandlerAdapter, em seguida, executar O método front ( preHandlemétodo) do interceptador Spring MVC , analisa e converte os parâmetros de solicitação e, em seguida, (usando reflexão), chama o Controllermétodo correspondente específico para retornar um ModelAndViewobjeto, executa o método post do interceptador ( postHandlemétodo) e retorna o resultado Execute o processamento e, finalmente, execute o afterCompletionmétodo.

Publicado 94 artigos originais · curtiu 0 · visitas 722

Acho que você gosta

Origin blog.csdn.net/qq_46578181/article/details/105458281
Recomendado
Clasificación