基础概念总结(spring security、Quartz、JUnit测试)

摘要:
过滤器最上层为HttpSessionContextIntegrationFilter、然后是LogoutFilterspringsecurity中重要的类SecurityContextHolder提供几种访问SecurityContext的方式;SecurityContext,保存Authentication信息,和请求对应的安全信息;Authentication,展示SpringSecurity特定的主体以登陆和退出为例说明,登陆成功后通过认证,认证信息保存到securityContext中并给holder。并可以通过Stringid=SecurityContextHolder.getContext().getAuthentication().getName();取出用户信息。退出时则清空securityContextHolder。如果是Quartz独立使用,则直接调用scheduler.shutdown;3、JUnit测试作为unittest的工具。
1、Spring Security 的大体框架和原理
(1)在web.xml中配置过滤器,这样就可以控制这个项目的每个请求。
(2)在applicationContext.xml配置,其中http标签配置如何截用户请求,和配置用户认证(固定用户、使用数据库管理用户)。
(3)过滤器最上层为HttpSessionContextIntegrationFilter、然后是LogoutFilter
(4)spring security中重要的类SecurityContextHolder提供几种访问SecurityContext的方式;SecurityContext,保存Authentication信息,和请求对应的安全信息;Authentication,展示Spring Security特定的主体
(5)以登陆和退出为例说明,登陆成功后通过认证,认证信息保存到securityContext中并给holder。并可以通过String id= SecurityContextHolder.getContext().getAuthentication().getName(); 取出用户信息。退出时则清空securityContextHolder。
原理:可以理解为通过过滤/认证体系来保护系统资源。
2、spring Quartz 工作框架原理
(1)spring对Quartz的再次封装。
(2)scheduler是一个计划调度器容器,容器里面可以盛放众多的JobDetail和trigger,当容器启动后,里面的每个JobDetail都会根据trigger按部就班自动去执行。
(3)JobDetail是一个可执行的工作。
(4)Trigger代表何时去调用计划。
(5)scheduler是个容器,容器中有一个线程池,用来并行调度执行每个作业,这样可以提高容器效。
(6)Quartz容器的关闭方式也很简单,如果是Spring整合,则有两种方法,一种是关闭Spring容器,一种是获取到SchedulerFactoryBean实例,然后调用一个shutdown就搞定了。如果是Quartz独立使用,则直接调用scheduler.shutdown(true);
3、JUnit测试
(1)作为unit test的工具。
(2)新建 unit test case。
(3)测试开始 -> setUp(初始化) -> testXXXX -> tearDown(撤销初始化) ->测试结束
4、设计模式种类
(1)策略模式:封装变化。
(2)观察者模式:多个观察者同时监听同一个被观察对象。
(3)装饰者模式:应对扩展的一种模式。
(4)工厂模式:责将大量有共同接口的类实例化。
(5)单态模式:确保每个类只有一个实例,并提供它的全局访问点。
(6)适配器模式:适配器类需要实现目标接口。
(7)外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。
(8)模板方法模式:定义一个算法的骨架,将变化步骤重新封装。
(9)代理模式:略。
大约有十几种。
5、swing概况
(1)GUI开发包
(2)swting设计模式为MVC,一个GUI组件对应着一个MVC体系。例如JTable,MVC 就是 TableModel JTable TableUI.
6、XML开发
(1)使用dom4j产生xml字串
(2)使用digester解析xml到bean对象
*********************************************
在web.xml里面配置多个Spring的applicationContext文件
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-*.xml</param-value>
</context-param>
在web.xml文件里面添加以上代码。只要将以applicationContext-开头的xml文件放到src目录之下就可以了。
一般有applicationContext-service.xml和applicationContext-dao.xml。
如果有多个applicationContext配置文件的话用逗号隔开,例如:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-*.xml,classpath:myBeans.xml</param-value>
</context-param>
*********************************************
RunWith(Suite.class) 谁知道RunWith的用法没?
代码:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath*:spring/applicationContext*.xml"})
public abstract class AbstractTransactionalTest extends AbstractTransactionalJUnit4SpringContextTests {
}
-----------------------------------------
在使用所有注释前必须使用@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境
Spring框架在org.springframework.test.annotation 包中提供了常用的Spring特定的注解集,如果你在Java5或以上版本开发,可以在测试中使用它。
*********************************************
用junit测试quartz,无法正常运行
7先生 回答于 2012-10-22 18:15
因为junit不能测试多线程的东西,而quartz是在线程中去执行的。所以不能。涉及到线程的测试最好用main函数去测试,或者使用GroboUtils等支持多线程的框架+junit,具体可以百度一下GroboUtils+junit即可
FutureTime 回答于 2012-11-16 16:10
可以把当前junit的方法sleep一段时间就行了

免责声明:文章转载自《基础概念总结(spring security、Quartz、JUnit测试)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇I帧和IDR帧的区别net 异步与同步下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python解析xml文件之xml.etree.cElementTree和xml.etree.ElementTree区别和基本使用

1、解析速度:ElementTree在 Python 标准库中有两种实现。一种是纯 Python 实现例如 xml.etree.ElementTree ,另外一种是速度快一点的 xml.etree.cElementTree 。你要记住: 尽量使用 C 语言实现的那种,因为它速度更快,而且消耗的内存更少。 2、调试区别 使用cElementTree的话,在p...

Jasper Report 教程

1     简介 JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,或者XML格式。最重要的是它是开源的,这给我们带来很大方便,但是文档却要钱,让人不爽。不过人总要生存,再说,做这么一个好东西,用户总不能一点代价也不付(虽然对于中国普通程序原来说太贵了点)。它还有一个相关的开源工程—IReport...

Spring Boot配置文件详解:自定义属性、随机数、多环境配置

自定义属性与加载 我们在使用Spring Boot的时候,通常也需要定义一些自己使用的属性,我们可以如下方式直接定义: application-dev.yml 1 com.didispace.blog: 2 3 name: 程序猿DD 4 5 title: Spring Boot教程 6 7 desc: ${com.didispace.blog.na...

修改weblogic上下文路径

在使用weblogic的时候,启动之后,如果有IP端口之后有后缀,那么可能会导致404错误 查看weblogic控制台,然后点击部署,然后查看上下文,从而可以看到加什么后缀才是正常的 weblogic上下文根路径在WEB-INF目录中,然后是web.xml文件或者是weblogic.xml文件 在一个标签为<context-root>/&...

tomcat的安全配置(禁用http方法,部署多个应用,启用从安全cookie,指定错误页面和显示信息)

配置版本:tomcat6 1,虚拟路径,可以配置多个host在一个tomcat中,docbase是web应用目录,此处在server.xml中添加应用配置,要让server.xml配置生效需要重启tomcat <Host name="XXXXx" appBase="D:webroot"unpackWARs="true" autoDeploy="tru...

Quartz定时任务

Quartz可以用来做什么? Quartz是一个任务调度框架。比如你遇到这样的问题 想每月25号,信用卡自动还款 想每年4月1日自己给当年暗恋女神发一封匿名贺卡 想每隔1小时,备份一下自己的爱情动作片 学习笔记到云盘 这些问题总结起来就是:在某一个有规律的时间点干某件事。并且时间的触发的条件可以非常复杂(比如每月最后一个工作日的17:50),复杂到需要...