​​基础概念总结(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一段时间就行了