9.Spring Security快速上手-创建工程

Spring Security介绍

  • Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。由于它是Spring生态系统中的一员,因此它伴随着整个系统Spring系统不断修正,升级,在Spring boot项目中加入Spring Security更是十分简单,使用Spring Security减少了为企业系统安全控制编写大量重复代码的工作。

创建工程

创建maven工程

  • 创建maven工程security-spring-security,工程结构如下:
  • 引入一下依赖:
  • 在security-springmvc的基础上增加spring-security的依赖:

    org.springframework.security
    spring-security-web
    5.1.4.RELEASE


    org.springframework.security
    spring-security-config
    5.1.4.RELEASE

Spring容器配置

  • 同security-springmvc。
@Configuration
@ComponentScan(value = "com.stan.security"
        ,excludeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,value = Controller.class)})
public class ApplicationConfig {
    //在此配置除了Controller的其它的bean,比如:数据库连接池,事务管理器,业务bean等
}

Servlet Context配置

  • 同security-springmvc。
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.stan.security"
        ,includeFilters = {@ComponentScan.Filter(type = FilterType.ANNOTATION,value = Controller.class)})
/**
 * 相当于springmvc.xml文件
 */
public class WebConfig implements WebMvcConfigurer {

    //视图解析器
    @Bean
    public InternalResourceViewResolver viewResolver(){
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/view/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry){
        registry.addViewController("/").setViewName("login");
    }
}

加载Spring容器

  • 在init包下定义Spring容器初始化类SpringApplicationInitializer,此类实现WebApplicationInitializer接口,Spring容器启动时加载WebApplicationInitializer接口的所有实现类。
public class SpringApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    /**
     * spring容器,相等于加载了applicationContext.xml
     * @return
     */
    @Override
    protected Class[] getRootConfigClasses() {
        return new Class[]{ApplicationConfig.class};
    }

    /**
     * servletContext,相当于加载springmvc.xml
     * @return
     */
    @Override
    protected Class[] getServletConfigClasses() {
        return new Class[]{WebConfig.class};
    }

    /**
     * url-mapping
     * @return
     */
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

你可能感兴趣的:(9.Spring Security快速上手-创建工程)