转自:http://www.blogjava.net/larry/archive/2007/07/05/128419.html

项目中
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
原理和浮点数的计算机表示方式有关 ,你不用上机,就答对了,你最好去微软,接替安德尔森.