HTTP状态500 - 未找到WebApplicationContext:没有注册ContextLoaderListener?

时间:2015-12-03 14:25:45

标签: spring-security spring-boot spring-data

我尝试使用Spring MVC + Spring Data JPA + Spring Security。但是我的webBrowser引发了异常:

"" HTTP Status 500 - No WebApplicationContext found: no ContextLoaderListener registered? java.lang.IllegalStateException:
 No WebApplicationContext found: no ContextLoaderListener registered?

以下是代码:

org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:252)""

public class WebInitializer implements WebApplicationInitializer{

@Override
public void onStartup(ServletContext servletContext) throws ServletException {
    FilterRegistration.Dynamic fr = servletContext.addFilter("encodingFilter", new CharacterEncodingFilter());
    fr.setInitParameter("encoding", "UTF-8");
    fr.setInitParameter("forceEncoding", "true");
    fr.addMappingForUrlPatterns(null, true, "/*");

    AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
    ctx.register(AppConfig.class);
    ctx.register(SecurityConfig.class);
    ctx.setServletContext(servletContext);
    ctx.refresh();

    ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
    servlet.addMapping("/");
    servlet.setLoadOnStartup(1);

  servletContext
            .addFilter("securityFilter",
                    new DelegatingFilterProxy("springSecurityFilterChain")).
            addMappingForUrlPatterns(null, false, "/*");

}
}

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Autowired
private UserDetailsServiceImpl userDetailsService;

@Autowired
public void registerGlobalAuthentication(AuthenticationManagerBuilder auth) throws Exception {
    auth.userDetailsService(userDetailsService)
            .passwordEncoder(new PasswordEncoder() {

                @Override
                public boolean isPasswordValid(String arg0, String arg1, Object arg2) {
                    return false;
                }

                @Override
                public String encodePassword(String arg0, Object arg1) {
                    return null;
                }
            });
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.csrf()
            .disable()
            .authorizeRequests()
            .antMatchers("/resources/**", "/**").permitAll()
            .anyRequest().permitAll()
            .and();

    http.formLogin()
            .loginPage("/login")
            .loginProcessingUrl("/j_spring_security_check")
            .failureUrl("/error")
            .usernameParameter("j_username")
            .passwordParameter("j_password")
            .permitAll();

    http.logout()
            .permitAll()
            .logoutUrl("/logout")
            .logoutSuccessUrl("/login?logout")
            .invalidateHttpSession(true);

}

@Bean
public ShaPasswordEncoder getShaPasswordEncoder(){
    return new ShaPasswordEncoder();
}

}




 @Configuration
@ComponentScan("ua.kiev.prog")
@EnableTransactionManagement
@EnableWebMvc
@EnableJpaRepositories

public class AppConfig {


    @Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory
        (DataSource dataSource, JpaVendorAdapter jpaVendorAdapter)
{
    LocalContainerEntityManagerFactoryBean entityManagerFactory = new LocalContainerEntityManagerFactoryBean();
    entityManagerFactory.setDataSource(dataSource);
    entityManagerFactory.setJpaVendorAdapter(jpaVendorAdapter);
    entityManagerFactory.setPackagesToScan("ua.kiev.prog");
    return entityManagerFactory;
}

@Bean
public PlatformTransactionManager transactionManager(EntityManagerFactory emf){
    return new JpaTransactionManager(emf);
}

@Bean
public JpaVendorAdapter jpaVendorAdapter()
{
    HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter();
    adapter.setShowSql(true);
    adapter.setGenerateDdl(true);
    adapter.setDatabasePlatform("org.hibernate.dialect.MySQLDialect");

    return adapter;
}

@Bean
public DataSource dataSource()
{
    DriverManagerDataSource ds = new DriverManagerDataSource();
    ds.setDriverClassName("com.mysql.jdbc.Driver");
    ds.setUrl("jdbc:mysql://localhost:3306/prog"); //?characterEncoding=UTF-8
    ds.setUsername("root");
    ds.setPassword("GFDert567");

    return ds;
}

@Bean
public UrlBasedViewResolver setupViewResolver() {
    UrlBasedViewResolver resolver = new UrlBasedViewResolver();
    resolver.setPrefix("/WEB-INF/pages/");
    resolver.setSuffix(".jsp");
    resolver.setViewClass(JstlView.class);
    resolver.setOrder(1);
    return resolver;
}
@Bean
public UserDetailsService getUserDetailsService(){
    return new UserDetailsServiceImpl();
}

@Bean
public CommonsMultipartResolver multipartResolver() {
    return new CommonsMultipartResolver();
}

}

@SpringBootApplication
public class App {
    public static void main(String[] args) throws Exception {
        SpringApplication.run(App.class, args);
    }
}

0 个答案:

没有答案