В основном я предпочитаю многоуровневую архитектуру с пружинной загрузкой, поэтому с двумя разными слоями для Configuration
и model
, например
package app.config
@Configuration
public class MyDataConfig {
// factory method
@Bean
public static MyData loadMyData(ResourceLoader resourceLoader) throws IOException {
try (InputStream input = resourceLoader.getResource("classpath:data.json").getInputStream()) {
return new ObjectMapper().readValue(input, MyData.class);
}
}
}
пакет com.model
public class MyData {
// data structure
private Map<String, DataDetail> details;
// ...
}
Еще одно решение.
Добавьте ErrorControllers или статическую страницу к с 404 информацией об ошибке.
Измените свой web.config (в случае контроллера).
<system.web>
<customErrors mode="On" >
<error statusCode="404" redirect="~/Errors/Error404" />
</customErrors>
</system.web>
Или в случае статической страницы
<system.web>
<customErrors mode="On" >
<error statusCode="404" redirect="~/Static404.html" />
</customErrors>
</system.web>
Это обработает и пропущенные маршруты и пропущенные действия.
То, что я могу рекомендовать, должно считать FilterAttribute. Например, MVC уже имеет HandleErrorAttribute. Можно настроить его для обработки только 404. Ответ, если Вы заинтересованы, я посмотрю пример.
BTW
Решение (с последним маршрутом), что Вы приняли в предыдущем вопросе, не работает в большой части ситуаций. Второе решение с HandleUnknownAction будет работать, но требовать, чтобы внести это изменение в каждом контроллере или иметь единственный основной контроллер.
Моим выбором является решение с HandleUnknownAction.
В IIS можно указать перенаправление к "определенной" странице на основе кода ошибки. В Вас пример можно настроить 404-> специализированные 404 ошибочных страницы.