spring 学习笔记1

来源:互联网 发布:有关人工智能爱情电影 编辑:程序博客网 时间:2024/05/19 23:57


spring的好处不用多说,无数的大中小企业都在用它。
万事开头难,从写一个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,

[xhtml] view plaincopy
  1. <beans xmlns="http://www.springframework.org/schema/beans"  
  2.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.     xmlns:context="http://www.springframework.org/schema/context"  
  4.     xmlns:tx="http://www.springframework.org/schema/tx"  
  5.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  6.                 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd  
  7.                 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">  
  8.                   
  9.     <bean id="myBook" class="model.Book">  
  10.         <property name="id" value="000002" />  
  11.         <property name="name" value="Thinking in java" />  
  12.         <property name="author" value="Bruce Eckel" />  
  13.         <property name="price" value="2222" />  
  14.     </bean>  
  15. </beans>  

spring2.55 bean定义文件的命名空间臭长臭长,不容易记住,但是也没有必要记住,在spring解压目录下面有sample,在里面找一个applicationContext.xml,把内容拷贝过来,把里面去掉里面配置的bean和注释。

在src目录下面新建一个package,叫做model,以后所有的域对象都放在这个package里面;在里面新建一个pojo(普通的java bean),叫作Book;并且给他一个有参构造函数和toString方法以方便测试。

[java] view plaincopy
  1. package model;  
  2.   
  3. public class Book {  
  4.     private String id;  
  5.     private String name;  
  6.     private String author;  
  7.     private double price;  
  8.   
  9.     public Book() {}  
  10.   
  11.     public Book(String id, String name, String author, double price) {  
  12.         this.id = id;  
  13.         this.name = name;  
  14.         this.author = author;  
  15.         this.price = price;  
  16.     }  
  17.   
  18.     public String getId() {  
  19.         return id;  
  20.     }  
  21.   
  22.     public void setId(String id) {  
  23.         this.id = id;  
  24.     }  
  25.   
  26.     public String getName() {  
  27.         return name;  
  28.     }  
  29.   
  30.     public void setName(String name) {  
  31.         this.name = name;  
  32.     }  
  33.   
  34.     public String getAuthor() {  
  35.         return author;  
  36.     }  
  37.   
  38.     public void setAuthor(String author) {  
  39.         this.author = author;  
  40.     }  
  41.   
  42.     public double getPrice() {  
  43.         return price;  
  44.     }  
  45.   
  46.     public void setPrice(double price) {  
  47.         this.price = price;  
  48.     }  
  49.       
  50.     public String toString(){  
  51.         return "id: " + id + "/nname: " + name + "/nauthor: " + author + "/nprice: " + price + "/n";  
  52.     }  
  53.       
  54. }  

然后在bean-test.xml中配置一个bean,如上面xml文件所示,
第五步:写第一个主程序; 叫做TestSpring.java; 我喜欢把所有的测试类都放在一个叫做test的package里面

[java] view plaincopy
  1. package test;  
  2.   
  3. import model.Book;  
  4.   
  5. import org.springframework.context.ApplicationContext;  
  6. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  7.   
  8. public class TestSpring {  
  9.   
  10.     public static void main(String[] args) {  
  11.         ApplicationContext context = new ClassPathXmlApplicationContext("bean-test.xml");  
  12.         Book book = (Book)context.getBean("myBook");  
  13.         System.out.println(book.toString());  
  14.     }  
  15.   
  16. }  

运行代码,发现抛错,是找不到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容器.

0 0