MicroFish

Open & Open hits
随笔 - 33, 文章 - 2, 评论 - 4, 引用 - 0
数据加载中……

(转)《Pro Spring》学习笔记(1)--写在前面的话

不是刚开始接触Spring了,也用Spring做过一些东西。我的感觉是用Spring会有一种很爽的感觉,一切都是那么的简单高效,顺理成章。
      在网上也看到过很多牛人对Spring的评论文章,其中不乏一些颇有微词的评论。当然,任何事务都不可能十全十美的,我只是一个普通的Java程序员,还无法站在一定的高度,看到Spring这样那样的不足。我感觉到的只是Spring给我带来的好处和便利,因此我选择了Spring。
      接下来的文字,记录的只是在学习《Pro Spring》这本书的过程中,我觉得需要着重了解的部分,大部分文字属于抄书,外加一点点个人的理解。
      感谢Rob Harrop和Jan Machacek给我们带来了这本通俗易懂的Spring入门书籍。

posted @ 2006-12-21 10:19 刘璐 阅读(282) | 评论 (0)编辑 收藏

springIDE

首先尝试link方式安装,无法使用。上网查询后,网友都认为应该用updata方式安装

1.打开eclipse,菜单"help"->"software updates"->"find and install"
2.在弹出的界面中选择“Search for new features to install”
3.这一步可分成两种情况:
a.如果本地已经下载SpringIDE的压缩包,请解压到一个目录(比如SpringIDE),里面有两个目录(features、plugins)和一个文件site.xml,在弹出的界面中选择"New Local Site",指到前面的解压后目录(SpringIDE),点“OK”,在"Name"中输入“SpringIDE Update”
b.如果没有下载SpringIDE的压缩包,在弹出的界面中选择“New Remote Site”,在"Name"中输入“SpringIDE Update”,在“URL”中输入“http://springide.org/updatesite/”,点“OK”
4.选中"SpringIDE Update",点“finish”,开始搜索站点的更新信息
5.在搜索界面的界面中选中要更新的,继续
因为我的网络有防火墙隔离,所以直接下载了springide_updatesite_1.2.1.zip在本地安装。

安装过程中,出现error retrieving “feature.xml“的错误,这时候删除了根目录的site.xml文件,就可以updata了

另外,springIDE的使用方法可以参考 http://www.volitation.net/Dynamic/print.asp?SelectID=101

posted @ 2006-11-18 16:13 刘璐 阅读(540) | 评论 (0)编辑 收藏

Eclipse 插件集

Eclipse SQLExplorer plugin
一个数据库管理插件
http://sourceforge.net/projects/eclipsesql

Poperties Editor
 
http://propedit.sourceforge.jp/eclipse/updates/

eclipseME
 
http://eclipseme.org/updates/

Eclipse加速插件KeepResident
http://suif.stanford.edu/pub/keepresident/

 
MyEclipse  J2EE开发插件,支持SERVLET/JSP/EJB/数据库操纵等
www.myeclipseide.com
 
Properties Editor  编辑java的属性文件,并可以自动存盘为Unicode格式
http://propedit.sourceforge.jp/index_en.html
http://propedit.sourceforge.jp/eclipse/updates/
 
Colorer Take  为上百种类型的文件按语法着色
http://colorer.sourceforge.net/
 
XMLBuddy 编辑xml文件
www.xmlbuddy.com
 
Code Folding  加入多种代码折叠功能(比eclipse自带的更多)
http://www.coffee-bytes.com/servlet/PlatformSupport
 
Easy Explorer  从eclipse中访问选定文件、目录所在的文件夹
http://easystruts.sourceforge.net/
 
Fat Jar 打包插件,可以方便的完成各种打包任务,可以包含外部的包等
http://fjep.sourceforge.net/
 
RegEx Test 测试正则表达式
http://brosinski.com/stephan/archives/000028.php
 
JasperAssistant 报表插件(强,要钱的)
http://www.jasperassistant.com/
 
Jigloo GUI Builder JAVA的GUI编辑插件
http://cloudgarden.com/jigloo/
 
Profiler 性能跟踪、测量工具,能跟踪、测量BS程序
http://sourceforge.net/projects/eclipsecolorer/
 
AdvanQas 提供对if/else等条件语句的提示和快捷帮助(自动更改结构等)
http://eclipsecolorer.sourceforge.net/advanqas/index.html
 
Log4E     Log4j插件,提供各种和Log4j相关的任务,如为方法、类添加一个logger等
http://log4e.jayefem.de/index.php/Main_Page
 
VSSPlugin VSS插件
http://sourceforge.net/projects/vssplugin
 
Implementors   提供跳转到一个方法的实现类,而不是接中的功能(实用!)
http://eclipse-tools.sourceforge.net/implementors/
 
Call Hierarchy 显示一个方法的调用层次(被哪些方法调,调了哪些方法)
http://eclipse-tools.sourceforge.net/call-hierarchy/index.html
 
EclipseTidy 检查和格式化HTML/XML文件
http://eclipsetidy.sourceforge.net/
 
Checkclipse 检查代码的风格、写法是否符合规范
http://www.mvmsoft.de/content/plugins/checkclipse/checkclipse.htm
 
Hibernate Synchronizer Hibernate插件,自动映射等
http://www.binamics.com/hibernatesync/
 
spring updatesite 插件
http://springide.org/updatesite/

VeloEclipse  Velocity插件
http://propsorter.sourceforge.net/
 
EditorList   方便的列出所有打开的Editor
http://editorlist.sourceforge.net/
 
MemoryManager 内存占用率的监视
http://cloudgarden.com/memorymanager/

Eclipse的游戏插件
http://eclipse-games.sourceforge.net/

JBoss-IDE
http://jboss.sourceforge.net/jbosside/updates/

自动反编译class,安装后要设定class文件缺省关联到jode
http://www.technoetic.com/eclipse/update


jigloo swing/sw设计工具,里面自带的form/anchor布局很好用!
http://cloudgarden.soft-gems.net/update-site/

jinto的资源文件编辑工具,同时编辑多种语言,而且自动转换成iso8859-1编码。很好用!
http://www.guh-software.de/eclipse/

posted @ 2006-10-29 13:54 刘璐 阅读(601) | 评论 (0)编辑 收藏

JAVA断言使用

相信学过c,c++的朋友一定不会对断言感到陌生。下面介绍一下断言在JAVA中的使用,JAVA是从JDK1.4才开始支持断言的(添加了关键字assert),请注意老版的JRE不支持。

断言概述


  编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设
  可以将断言看作是异常处理的一种高级形式
  断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真
  可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新起用断言。
  使用断言可以创建更稳定,品质更好且易于除错的代码
  当需要在一个值为FALSE时中断当前操作的话,可以使用断言
  单元测试必须使用断言(Junit/JunitX)
  除了类型检查和单元测试外,断言还提供了一种确定个种特性是否在程序中得到维护的极好的方法
  使用断言使我们向按契约式设计更近了一部

常见的断言特性


  前置条件断言:代码执行之前必须具备的特性
  后置条件断言:代码执行之后必须具备的特性
  前后不变断言:代码执行前后不能变化的特性

断言使用方式


  断言可以有两种形式
  1.assert Expression1
  2.assert Expression1:Expression2
  其中Expression1应该总是一个布尔值,Expression2是断言失败时输出的失败消息的字符串。如果Expression1为假,则抛出一个 AssertionError,这是一个错误,而不是一个异常,也就是说是一个不可控制异常(unchecked Exception),AssertionError由于是错误,所以可以不捕获,但不推荐这样做,因为那样会使你的系统进入不稳定状态。

起用断言


  断言在默认情况下是关闭的,要在编译时启用断言,需要使用source1.4标记 既javac source1.4 Test.java ,在运行时启用断言需要使用 -ea参数 。要在系统类中启用和禁用断言可以使用 -esa 和 -dsa参数。
  
例如:
public class AssertExampleOne{
   public AssertExampleOne(){}
   public static void main(String args[]){
      int x=10;
      System.out.println("Testing Assertion that x==100");
      assert x==100:"Out assertion failed!";
      System.out.println("Test passed!");
   }
}

如果编译时未加 -source1.4,则编译通不过
在执行时未加 -ea 时输出为
Testing Assertion that x==100
Test passed
jre忽略了断言的就代码,而使用了该参数就会输出为
Testing Assertion that x==100
Exception in thread "main" java.lang.AssertionError: Out assertion failed!
        at AssertExampleOne.main(AssertExampleOne.java:6)

断言的副作用


  由于程序员的问题,断言的使用可能会带来副作用 ,例如:
  boolean isEnable=false;
  //...
  assert isEnable=true;
  这个断言的副作用是因为它修改了程序中变量的值并且未抛出错误,这样的错误如果不细心的检查是很难发现的。但是同时我们可以根据以上的副作用得到一个有用的特性,根据它来测试断言是否打开。

 public class AssertExampleTwo{

   public static void main(String args[]){
     boolean isEnable=false;
     //...
     assert isEnable=true;
     if(isEnable==false){
       throw new RuntimeException("Assertion shoule be enable!");
     }
   }
}

何时需要使用断言


  1.可以在预计正常情况下程序不会到达的地方放置断言 :assert false
  2.断言可以用于检查传递给私有方法的参数。(对于公有方法,因为是提供给外部的接口,所以必须在方法中有相应的参数检验才能保证代码的健壮性)
  3.使用断言测试方法执行的前置条件和后置条件
  4.使用断言检查类的不变状态,确保任何情况下,某个变量的状态必须满足。(如age属性应大于0小于某个合适值)

什么地方不要使用断言


  断言语句不是永远会执行,可以屏蔽也可以启用
因此:
  1.不要使用断言作为公共方法的参数检查,公共方法的参数永远都要执行
  2.断言语句不可以有任何边界效应,不要使用断言语句去修改变量和改变方法的返回值

参考:
http://jcp.org/en/jsr/detail?id=41
http://java.sun.com/j2se/1.4.2/docs/guide/lang/assert.html
http://www-128.ibm.com/developworkers/cn/java/jdiag0723/
http://www-128.ibm.com/developworkers/cn/java/jmerlin/part9/

posted @ 2006-10-24 16:17 刘璐 阅读(21034) | 评论 (2)编辑 收藏

static方法不应该被重写

如果你认为重写只是在子类中简单的替换了一个方法,你就很容易认为static 方法也能
被重写。事实上,我有很多包含人们举例指明static 方法能被重写的代码的邮件。然而,这
些并没有考虑方法重写在运行时决定哪个版本的方法被调用的细节问题。下面的代码似乎表
明static 方法是怎样被重写的。
class Base{
   static void amethod(){
   System.out.println("Base.amethod");
   }
}
public class Cravengib extends Base{
   public static void main(String arg[]){
      Cravengib cg = new Cravengib();
      cg.amethod();
   }
   static void amethod(){
      System.out.println("Cravengib.amethod");
   }
}
如果你编译并运行这段代码,你会发现输出文本Cravengib.amethod,这似乎很好的指
明了重写。然而,对于重写,还有相对于在子类中使用一个方法简单替换另一个方法更多的
东西。还有运行时决定的方法基于引用的类的类型的问题,这可以通过制造正在被实例化的
类的引用类型(实例初始化语句的左半部分)来说明。
在上面的例子中,因为名字叫amethod 的方法与类发生了关联,而不是与特定的类的实
例相关联,它不在乎什么类型的类正在创建它,而仅仅在意引用的类型。因此,如果你在调
用amethod 前改变一下这一行,
Base cg= new Cravengib()
你就会发现当你运行程序时,你会得到输出:Base.amethod
cg 是一个类Cravengib 在内存中的一个Base 类型的实例的引用(或者指针)。如果一个static
方法被调用了,JVM 不会检查什么类型正在指向它,它只会调用跟Base 类相关联的方法的
实例。
与上面的情况相对比:当一个方法被重写时,JVM 检查通过引用正在指向的类的类型,
并调用此类型相关的方法。可以结束这个例子了,如果你将两个版本的amethod 方法改变为
非static,并依然创建类:
Base cg= new Cravengib()
编译并运行上述代码,你会发现amethod 已经被重写了,并且输出Cravengib.amethod。

posted @ 2006-10-24 11:47 刘璐 阅读(820) | 评论 (0)编辑 收藏

仅列出标题
共7页: 上一页 1 2 3 4 5 6 7 下一页