Spring Security学习——基于Java注解的Spring Security配置

              基于Java注解的Spring Security配置

 
        Spring在早期版本的时候,全是基于xml配置文件,导致配置极其繁杂。后期的版本中,Spring提供了对基于Java注解的支持。Java注解的Spring使每个Bean类有了自配置的特性,通过在每个类中添加相应的Java注解,就可以标注这些类在系统中的功能,可以大大减少配置文件的管理。当然,Java注解的Spring也有一些缺点,比如说使用了注解来配置Spring就会让Spring丧失热部署的能力,因为Java注解会编译,编译之后如果还想改的话就必须修改源代码再次编译上线,而如果使用Spring配置文件的话,就可以直接修改配置文件中的内容,Spring框架会自动重新加载配置,实现热部署。

      下面是完全基于注解的Spring MVC+Spring Security项目,在web.xml中没有任何配置。整了一个上午+下午两个小时,终于弄明白是怎么回事了。果然还是要好好了解下Spirng MVC的内部原理和底层实现,Spring MVC启动器可以继承AbstractAnnotationConfigDispatcherServletInitializer类,在getRootConfigClasses()方法中添加继承了WebMvcConfigurerAdapter的实现类,在getServletMappings()方法中配置Spring MVC需要拦截的请求路径正则表达式。而在WebMvcConfigurerAdapter实现类中,就可以定义我们平时在mvc-dispatcher.xml文件中配置的一些bean对象。要启动Spring Security还需要自己实现一个AbstractSecurityWebApplicationInitializer的子类,如果是基于Spring MVC的项目,就可以空实现,否则就需要在空构造方法中调用父类的构造方法,传入自己的Spring Security配置类,也就是一个继承于WebSecurityConfigurerAdapter自定义类,而自定义的WebSecurityConfigurerAdapter的子类,就相当于spring-security.xml文件,根据spring-security.xml文件中的配置相应地在configure(HttpSecurity htt)方法中对http进行配置即可。而WebSecurityConfigurerAdapter.configureGlobal(AuthenticationManagerBuilder auth)方法中,就可以配置Spring Security用户的信息数据源。在这里,调用auth.userDetailsService(new CustomeUserDetailService());这样运行项目发现在提交验证表单后老是提示404,也就是没有处理器可以处理提交的用户信息表单,不能进行验证,这也是卡住我大半天的问题,在 stack overflow终于找到了解决方法,在这时需要给formLogin添加loginProcessingUrl,在基于xml配置Spring Security的时候就没出现这个问题,现在还是很迷。

    Sprng MVC启动器,看名字就可以知道,具体是如何做到自定义类就可以实现Spring MVC启动的呢?
package security.controller;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class MvcWebApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

	@Override
	pro
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值