这几天终于闲下来了,回头翻了一下以前看过的spring企业开发,发现很多知识点都忘记了。决定把spring再复习一遍,于是头脑中迸出一个想法:把学习的进度记录下来,和初学者一起分享spring的学习经验。
spring的好处不用多说,无数的大中小企业都在用它。关于spring的理念一搜一大片,所以我也不想罗嗦,如果你还没有接触过spring, 建议先google一下以便于对spring有一个gross的了解。
万事开头难,从写一个spring控制台程序开始;
第一步:搭配学习环境; 我在家使用的是MyEclipse6.5集成环境,并且MyEclipse6.5自带了jre, 所以连jre都不用安装了。在xunlei上有下载,但是如果你也使用MyEclipse,希望你可以明白为什么MyEclipse自带的jre可以工作。
新建一个web project, 名字就叫作springapp。
右键点击springapp,察看java build path -> libraries属性:
正如你所看到的,开发环境自动把jre system lib放到本项目了, 所以自带的jre可以work,不过你开始可以点击Java Compiler来切换jre;如果你还不会安装jdk和jre, 建议你自己安装一个试试看。
第二步:获取spring; 在http://www.springsource.org/download下面选择下载最新的•Spring Framework 2.5.6.SEC01 ,建议下载spring-framework-2.5.6.SEC01-with-dependencies.zip,因为这个版本包含所有spring源码和第三方依赖包。必要的时候察看spring源码很重要。
解压刚下载的spring包。这个包有几个很重要的文件夹, 我用红色的标记出来。
第三步:拷贝必要的jar包; 把dist/modules下面的spring-beans,spring-context,spring-core,spring-orm, spring-jdbc, spring-web,spring-webmvc都拷贝到WebRoot/WEB-INF/lib下面;之所以拷贝这么多jar包,是因为他们都将很快被用到, 等你有经验之后你就知道哪些jar包都有哪些用处, 就可以随便添加,减少了。
第四步:编写bean定义文件;在src根目录下面建一个bean-test.xml,
spring2.55 bean定义文件的命名空间臭长臭长,不容易记住,但是也没有必要记住,在spring解压目录下面有sample,在里面找一个applicationContext.xml,把内容拷贝过来,把里面去掉里面配置的bean和注释。
在src目录下面新建一个package,叫做model,以后所有的域对象都放在这个package里面;在里面新建一个pojo(普通的java bean),叫作Book;并且给他一个有参构造函数和toString方法以方便测试。
然后在bean-test.xml中配置一个bean,如上面xml文件所示,
第五步:写第一个主程序; 叫做TestSpring.java; 我喜欢把所有的测试类都放在一个叫做test的package里面
运行代码,发现抛错,是找不到LogFactory,这是因为spring使用了apache的commons-logging包来写日志。在spring解压目录的lib/jakarta-commons下面把commons-logging, commons-dbcp, commons-io, commons-pool都拷贝到WEB-INF/lib目录,因为剩下几个jar也很快就会被用到。以后因为缺少jar包报错的事情还会有很多,要随即应变,把jar包拷贝过来即可。
现在程序可以运行了,并且打印出了book的信息。
现在我们来分析一下这个spring控制台程序。
添加几个jar包,写一个配置文件,然后写一个主程序,spring已经开始运行了,看来没有想象中的神秘;这个程序作了这样几个工作:启动一个IOC容器,ApplicationContext就是我们的IOC容器,这个容器从指定的classpath下面的配置文件中读取bean配置,并且实例化他们,然后context.getBean("bean name")就可以得到想要的bean, 然后就可以使用这个bean. 这个程序与传统的程序最大的不同,就是不再使用new来创造对象, 就是说对象之间的依赖关系不再明文写在代码中,而是采用配置文件来配置他们,然后由IOC容器来装配他们,这就是spring最重要的概念之一:依赖注入.
明天将继续讲IOC容器.