基础配置
debug=true 打印日志,可以指定默认加载的自动配置类,非常有用。
spring开发者工具
自动重启
修改某些文件后,会触发程序自动重启
spring.devtools.restart.exclude
spring.devtools.restart.enable
spring.devtools.restart.trigger-file: //设置触发文件,只有修改设置的触发文件后才能重启
LiveReload支持
不要手动刷新页面
spring.devtools.livereload.enabled
远程开发
spring.devtools.remote.secret
spring boot中静态文件的优先级
resources > static >public > /**
spring.mvc.static-pattern 设置静态路径
日志配置
springboot 默认的日志是 logback
如果想要其他的日志框架,要排除自身的框架
任务
任务调度器和异步调度器 Quartz工具
异步任务 @EnableAsync @Async
定时任务 @EnableScheduling @Scheduled cron表达式
邮件任务 spring-boot-starter-mail JavaMailSenderImpl 邮件发送器 执行send方法发送邮件
spring Email的核心是 JavaMailSender 接口
spring有该接口的实现类,JavaMailSenderImpl,需要配置邮件发送器,默认监听端口是25
发送邮件,邮件的实现类之一SimpleMailMessage
检索
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。
监控管理
spring-boot-starter-actuator 准生产环境监控
management.security.enable=false
localhost:port/监控端点 监控端点[ beans,health, info,mappings,dump ,env ,autoconfig,auditevents ,configpros ,trace]等
endpoints 结点可以定制端点,修改端点属性,配置文件修改。
开发热部署
添加图片验证功能
使用谷歌的 com.google.code.kaptcha.impl.DefaultKaptcha
整合shiro
authentication ,authorization ,session mangement ,cryptography
认证 授权 会话管理 加密
ShiroFilterFactoryBean
DefaultAdvisorAutoProxyCreator 开启shiro注解
AuthorizationAttributeSourceAdvisor
org.apache.shiro.SecurityUtils;//shiro自带的工具类
org.apache.shiro.session.Session;
Subject:主体,可以看到主体可以是任何可以与应用交互的“用户”;
SecurityManager :
FilterDispatcher:是 Shiro 的心脏;所有具体的交互都通过 SecurityManager 进行控制;它管理着所有 Subject、且负责进行认证和授权、及会话、缓存的管理。
Authenticator:认证器,负责主体认证的,这是一个扩展点,如果用户觉得 Shiro 默认的不好,可以自定义实现;其需要认证策略(Authentication Strategy),即什么情况下算用户认证通过了。
Authrizer:授权器,或者访问控制器,用来决定主体是否有权限进行相应的操作;即控制着用户能访问应用中的哪些功能。
Realm:可以有 1 个或多个 Realm,可以认为是安全实体数据源,即用于获取安全实体的;可以是 JDBC 实现,也可以是 LDAP 实现,或者内存实现等等;由用户提供;注意:Shiro不知道你的用户/权限存储在哪及以何种格式存储;所以我们一般在应用中都需要实现自己的 Realm。
SessionManager:
spring security
@EnableWebSecurity @EnableWebMvcSecurity 两个注解启用安全配置,配置在注解类上。
WebSecurityConfigurerAdater 安全配置的注解类要继承WebSecurityConfigurerAdater
安全设置要覆盖超类的三个方法。
configure(WebSecurity) 通过重载,配置spring security的filter链
configure(HttpSecurity) 配置页面的权限
configure(AuthenticationManagerBuilder) 配置用户的权限数据
configure(AuthenticationManagerBuilder)
存储用户权限数据
- 方式1 直接使用,使用inMemoryAuthentication() 方法
- 方式2 使用数据库方式,jdbcAuthentication()方法 如果密码设置了加密,需要借助passwordEncoder指定一个密码转换器转换密码
- 方式3 基于LDAP进行认证 ldapAuthentication()方法, 远程服务器需要使用contextSource方法,指定远程地址
- 方式4 使用自配置的用户存储,需要自定义一个UserDetailsService接口实现,借助同名的方法设置,用非关系型数据库存储用户权限设置。
configure(HttpSecurity) 配置页面的权限
可以使用方法,或者SPEL表达式,或者使用强制通道安全,及使用HTTPS验证,这里需要用到的方法是requiresChannel()方法。
实现方法级别上的安全性
使用注解保护方法
- Spring security自带的 @Secured注解
- JSR-250 的@RolesAllowed注解
- 表达式取代的注解,包括@PreAuthorize @PostAuthorize @PreFilter @PostFilter
以上这些注解是在方法级别上的注解
开始这些注解,需要在配置类上,添加 @EnableGlobalMethodSecurity(securedEnable=true,jsr250Enable=true,prePostEnable=true)
配置类可以扩展 GlobalMethodSecurityConfiguration 这个配置类,自定义安全行为
读取微软文档
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。
远程服务
测试
- Spring Mock MVC:能在一个近似真实的模拟Servlet环境下进行测试
- Web集成测试
- 模块测试框架 JUnit
- 测试整合框架 Unitils
数据库测试框架 Dbunit ;使用excel表格进行测试
需要验证的测试,spring security提供了两个注解 @WithMockUser @WithUserDetails
@WebIntegrationTest 声明spring boot为测试创建应用上下文,还要启动一个嵌入式的servlet容器。