2014-09-22 2 views
1

Я работаю над весенним загрузочным приложением с использованием угловой рамки. Я структурировали проект следующим образом:Весеннее загрузочное веб-приложение не служит статическому контенту

  • SRC/главная/Java: пружинно-загрузочные файлы, контроллеры, инерционности
  • SRC/основные/ресурсы: application.properties
  • SRC/главная/приложение: " WebAPP»файлы, угловые, CSS, модули

для того, чтобы пружина служить статическое содержимое в/приложения я расширил класс WebMvcConfigurerAdapter переопределить метод addResourceHandlers:

@EnableWebMvc 
@Configuration 
@ComponentScan(basePackages = { "com.myapp.controller" }) 
public class WebMvcConfig extends WebMvcConfigurerAdapter { 

private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/", 
     "classpath:/resources/", "/" }; //src/main/webapp works by default 

private static final String[] RESOURCE_LOCATIONS = { "classpath:/src/main/app/", "classpath:/src/main/app/" }; 

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 

    if (!registry.hasMappingForPattern("/webjars/**")) { 
     registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); 
    } 

    if (!registry.hasMappingForPattern("/**")) { 
     registry.addResourceHandler("/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS).setCachePeriod(0); 
    } 

    if (!registry.hasMappingForPattern("/app/**")) { 
     registry.addResourceHandler("/app/**").addResourceLocations(RESOURCE_LOCATIONS).setCachePeriod(0); 
    } 
}} 

При попытке доступа угловую основной файл с помощью http://localhost:8080/app/app.html я получаю ошибку HTTP 404. По какой-то причине, если переименовать папку/приложение в/веб-приложение Я могу предназначаться http://localhost:8080/app.html. Я определенно пропускаю что-то, но не могу понять, что это. Спасибо

+1

У вас есть 'src/main/app' под вашим приложением. Вы настроили Maven или Gradle для включения этого каталога? Более того, почему бы просто не следовать стандартным правилам Spring Boot для статического контента? – geoand

+1

Я предлагаю прочитать справочник по загрузке весны (особенно те, которые уже сопоставлены по умолчанию) и использование webjars. В основном, что делает в вашем классе WebMvcConfig уже сделано Spring Boot, поэтому вы просто усложняете ситуацию. –

+0

@geoand Да, я добавил исходный каталог 'src/main/app' в maven, используя build-helper-maven-plugin. Использование стандартного класса src/main/static и комментирования класса WebMvcConfig по-прежнему имеет ту же проблему. – user3278795

ответ

2

Вам необходимо указать расположение ресурсов в пути к классам, а не их местоположение в вашем источнике. Например, ресурсы в src/main/resources/static обслуживаются местоположением ресурса classpath:/static/, поскольку сборка Maven приводит к тому, что все в src/main/resources находится в корне пути пути. Короче говоря, расположение ресурсов classpath:/src/main/app почти наверняка неверно: вам нужно настроить Spring Boot для загрузки ресурсов из того места, где вы настроили Maven для их сборки и упаковки.

1

Добавить этот файл. Это сработало для меня. предположим, что файлы статических ресурсов находились под папкой: src/main/webapp.

@Configuration общественного класса WebMappingConfig расширяет WebMvcConfigurerAdapter {

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    // 1. when put angularjs under src/main/resources/static. 
    // String[] myExternalFilePath = {"classpath:/static/app/build/"}; 
    // 2. when put angularjs under src/main/webapp. 
    String[] staticResourceMappingPath = { "/app/build/", 
      "classpath:/static/", "classpath:/static/app/build/" }; 

    registry.addResourceHandler("/**").addResourceLocations(
      staticResourceMappingPath); 
} 

}

Попробуйте: 1. Кд/SRC/главная/WebAPP 2. GIT клон https://github.com/ngbp/ngbp.git приложение 3. кд приложение 4. npm установка
5. установка балки 6. часы для ворчания

Но при установке статический ресурс не будет скопирован в файл * .jar, вам нужно скопировать все эти файлы в папку app/build/to src/main/resource/static.

Смежные вопросы