META-INF / recursos não funciona corretamente com @EnableWebMVC na Primavera Bota

votos
4

1.

Eu estou trabalhando com a Primavera de inicialização. Minha classe principal muito simples

@ComponentScan
@EnableAutoConfiguration
@Configuration
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

# 2. Agora eu gostaria de fazer o meu conteúdo estático externalizado em um arquivo jar. Assim, abaixo é o projeto jar

/pom.xml
/src/main/resources/META-INF/resources/hello.json // here is my resource

Eu maven installe colocar a dependência no aplicativo principal, execute o aplicativo normalmente. Agora eu posso invocar http://localhost:8080/hello.jsonpara obter meu arquivo hello.json

# 3. Então, o próximo passo é usar as telhas Apache para o meu projeto web principal, então eu criar uma @EnableWebMvcclasse para configurar otilesViewResolver

@Configuration
@EnableWebMvc
public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
    public @Bean TilesViewResolver tilesViewResolver() {
        return new TilesViewResolver();
    }

    public @Bean TilesConfigurer tilesConfigurer() {
        TilesConfigurer ret = new TilesConfigurer();
        ret.setDefinitions(new String[] { classpath:tiles.xml });
        return ret;
    }
}

Então eu comecei novamente a aplicação e tente a hello.jsonpara garantir que tudo ainda funciona corretamente. Mas, aparecem na página 404. Excluir a WebMvcConfigurationdar de volta o meu hello.json.

Qual a configuração que devo fazer para resolver este problema?

Muito obrigado.

Publicado 11/10/2013 em 05:21
fonte usuário
Em outras línguas...                            


1 respostas

votos
3

Em Spring MVC, usando a configuração XML, você tem que ter uma tag como a seguinte para servir conteúdo estático:

<mvc:resources mapping="/js/**" location="/js/"/>

Esta insinua que a Primavera de inicialização está fazendo algo para adivinhar automaticamente que você tem conteúdo estático e configurar corretamente o exemplo acima em META-INF / recursos. Não é realmente "mágica", mas sim que eles têm um padrão de configuração Java usando @EnableWebMvcque tem alguns valores padrão muito confiáveis.

Quando você fornecer o seu próprio @EnableWebMvc, o meu palpite é que você está sobre-escrevendo seu um "default". Para adicionar de volta um manipulador de recursos, você faria algo assim:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/js/**").addResourceLocations("/js/").setCachePeriod(31556926);
}

Isto é equivalente ao XML acima.

Respondeu 17/10/2013 em 15:29
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more