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一段时间就行了