META-INF / ресурсы не работает должным образом с @EnableWebMVC весной ботинке

голоса
4

1.

Я работаю с Spring ботинком. Мой Главный класс очень прост

@ComponentScan
@EnableAutoConfiguration
@Configuration
public class Application {

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

# 2. Теперь я хотел бы сделать мой статический контент экспортирован в файл банка. Итак, ниже проект банка

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

Я maven installи поставить зависимость в главное приложение, запустить приложение в обычном режиме. Теперь я могу вызвать , http://localhost:8080/hello.jsonчтобы получить мой файл hello.json

# 3. Затем, следующий шаг с помощью Apache Tiles для моего основного веб - проекта, поэтому я создаю @EnableWebMvcкласс для настройкиtilesViewResolver

@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;
    }
}

Тогда я снова начал приложение и попробовать , hello.jsonчтобы убедиться , что все еще работает должным образом. Но, появится 404 страницы. Удалить WebMvcConfigurationвернуть мой hello.json.

Какую конфигурацию я должен сделать, чтобы решить эту проблему?

Большое спасибо.

Задан 11/10/2013 в 05:21
источник пользователем
На других языках...                            


1 ответов

голоса
3

В Spring MVC, с помощью конфигурации XML, вы должны иметь бирку вроде следующего для обслуживания статического контента:

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

Это инсинуирует , что весна загрузка делает что - то , чтобы автоматически догадаться , что у вас есть статический контент и правильно настроены в приведенном выше примере в META-INF / ресурсах. Это на самом деле не «магия», а то , что они имеют по умолчанию настройки Java с помощью , @EnableWebMvcкоторая имеет некоторые довольно надежные значения по умолчанию.

Когда вы предоставляете свои собственные @EnableWebMvc, я думаю, вы чрезмерно сочинительства их « по умолчанию» один. Для того , чтобы добавить обратно обработчик ресурсов, вы могли бы сделать что - то вроде этого:

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

Это эквивалентно выше XML.

Ответил 17/10/2013 в 15:29
источник пользователем

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