项目中Struts/Spring/Hibernate的基本流程
Struts+Spring+Hibernate develepment process:
1.Write your business class : DTO,FormBean,Action,Service Interface,Service Implementation.
2.Write JSP pages.
3.struts-config.xml Configuration : FormBean,Action,Forward pages.
4.applicationContext-service.xml Configuration: add your Service Interface and Service Implementation.
5.Add your service factory Get method to ServiceFactory.java
6.Build project and Generate the Description file(*.hbm.xml) of DTO.
7.applicationContext.xml Configuration: add *.hbm.xml file to applicationContext for O/R mapping.
Spring+hibernate的单元测试Junit
spring提供的单元测试是强大的,spring的单元测试很简单,封装的很好。我们要用spring的单元测试测试我们写的add,delete等方法时候需要spring提供的一个额外包spring-mock.jar,我已经传上来了。你只要熟悉单元测试,编写一个测试案例,然后把继承改为org.springframework.test.AbstractTransactionalDataSourceSpringContextTests就可以了,此时编译器会提示你要实现
/**
* 必须实现的方法
*/
public String[] getConfigLocations(){
String[] config = new String[]{"applicationContext.xml","applicationContext-dao.xml","applicationContext-hibernate.xml","applicationContext-service.xml"};
return config;
}
看了大家应该明白,就是把你配置好的xml赋值给它,
然后大家就可以通过下面方法:
下面的applicationContext这个变量是你只要继承了刚才那个抽象类就可以得到的一个恒量。
FriendService friendService = (FriendService)applicationContext.getBean("friendService");
得到你的实例来进行业务逻辑测试了,是不是很简单,大家试试吧,它在此时完成以后会把数据库回滚一次,不会影响你的数据库记录,非常好。
spring中提供 ContextLoaderListenter类,用来加载context的xml文件。
spring为struts提供ContextLoaderPlugIn类,此类也可以加载context的xml文件。
区别在于,两种方式加载的WebApplicationContext,以不同的Key存放在ServletContext中。而如果你定义了HibernateFilter的话,spring会利用WebApplicationContextUtils来获取WebApplicationContext,而此类并不识别ContextLoaderPlugIn类所加载的上下文,此时便会抛出异常: No WebApplicationContext found: no ContextLoaderListener registered?
利用ContextLoaderListenter来加载dao、service级别的context,而对于struts的action,用ContextLoaderPlugIn加载。
2005年漂泊的一年,先后求职于南京,上海和北京三地,因此惨遭京沪宁三地java高手蹂躏。
这些都是面试java架构师的比较变态的题目:
1。变态指数 4
int x=4;
System.out.println("value is " +((x>4)?99.9:9));
答案 9.0 问号表达式的后面两个条件有要求,因为前面的是float,所以后面转为float.
估计出题者才通过SCJP的考试。
2.变态指数 5
public class Test {
public static void main(String[] args) {
int x = 4;
java.util.Date date = (x > 4) ? new A() : new B();
}
}
class A extends java.util.Date {}
class B extends java.util.Date {}
答案 jdk1.4编译不通过,1.5可以
不知道出题人的意图
3.变态指数 6
String s=new String("abc");
创建了几个String对象?
答案 2个
这样的公司最好不要去
4.变态指数 7
const是不是java的关键字?
答案 const是java的关键字,但是java没有实现它
一般人绝对用不到它
5.变态指数 8
,short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
答案 1错2对,1因为向上转型了,最后导致类型不匹配错误 ,
因为s1的+=是一个操作符,能够自动转型,
short s1 = 1;
s1 = s1+1;这句话在c++里面可以的
不知道出题人的意图
6.变态指数 9
上海贝尔的面试题:你认为效率最高的方法,实现从1加到100.
答案 1-100的累加相当于加50次101,这样循环次数从100次降为50次:
int sun = 0
for(int i = 1,j = 100 ; i <= 50 ; i++,j--){
sun = sun + i + j;
}
出题人脑子有问题,直接(1+100)*50不是最快...其实类似这样的优化应该不是程序员考虑的范畴吧
7.变态指数 10
System.out.println(5.0942*1000);
System.out.println(5.0943*1000);
System.out.println(5.0944*1000);的结果
答案 :5094.2 5094.299999999999 5094.400000000001
原理和浮点数的计算机表示方式有关 ,你不用上机,就答对了,你最好去微软,接替安德尔森.
posted on 2007-07-05 17:33
larryjava 阅读(895)
评论(0) 编辑 收藏