Spring 4.x Конфигурация на основе Java-кода: файлы статических ресурсов и сервлет Dispatcher [дубликаты]
На этот вопрос уже есть ответ здесь:
Замена конфигурации аннотации для mvc: resources - Spring 2 ответаДо версии 3.0 сервлета все настройки основаны на xml. В настоящее время я использую конфигурацию на основе кода / аннотации.
В конфигурации стиля XML мы имеем
<mvc:resources mapping="/res/**" location="/res/" />
Как я могу перевести его в конфигурацию на основе кода? Я продолжаю получать сообщение об ошибке от консоли отладки eclipse, что не найден диспетчерский сервлет для файла ресурсов.
Кстати, вот моя ссылка,Миграция с Spring Security 3.x на 4.x (конфигурация Java)
инициализатор
public class AppInitializer extends
AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { SecurityConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] { MvcConfig.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
Конфигурация MVC
@EnableWebMvc
@ComponentScan({ "com.appname.controller" })
public class MvcConfig {
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/jsp/");
resolver.setSuffix(".jsp");
return resolver;
}
}
конфигурация безопасности
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true, jsr250Enabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth)
throws Exception {
auth.inMemoryAuthentication().withUser("user").password("password")
.roles("USER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/res/**").permitAll()
.and().authorizeRequests()
.anyRequest().hasRole("USER")
.and().formLogin().loginPage("/account/signin").permitAll()
.and().logout().permitAll();
}
}
инициализатор безопасности
public class SecurityInitializer extends
AbstractSecurityWebApplicationInitializer {
}
пользовательский логин
public class CustomUserDetailsService implements UserDetailsService {
private AccountRepository accountRepository;
public CustomUserDetailsService() {
this.accountRepository = new AccountRepository();
}
@Override
public UserDetails loadUserByUsername(String email)
throws UsernameNotFoundException {
Account account = accountRepository.getAccountByEmail(email);
if (account == null) {
throw new UsernameNotFoundException("Invalid email/password.");
}
Collection<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
authorities.add(new SimpleGrantedAuthority("USER"));
return new User(account.getEmail(), account.getPassword(), authorities);
}
}