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

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一段时间就行了
 
原文地址:https://www.cnblogs.com/huapox/p/3516349.html