Java基础系列之五:Spring使用入门示例
2010-05-10 16:35
936 查看
在Java世界有一件事情需要习以为常,就是经常会跑出一堆缩写、概念出来,什么Spring、Struts、Hibernate等等等等,这种情况谈不上好,你得花时间熟悉;也不能说是缺点,毕竟它带来新鲜跟乐趣。
最近稍微接触了一些Spring的皮毛,写了个例子,希望对初初初学者有用,高手指正。
1.Spring是什么
网上对Spring以及使用Spring的好处的解释铺天盖地,常常是各个网站之间互相拷贝,而且还引入了一堆的缩写,什么IoC、AOP……
我觉得对跟我一样的初学者而言,可以这么理解:Spring是基于反射机制写的一些包,有了它以后你可以将类的实例化写到一个配置文件里,由相应的Spring包负责实例化。
假设你有一个类A,以前你实例化时要写A a = new A(),现在不用了,你只要写一个xml文件,并按Spring指定的格式配置好,它就能通过反射机制将A的实例返回给你。
至于使用Spring的好处,我会在下面的实例中提到。
2. 下载Spring
http://www.springsource.org/download,目前最新的版本是3.0.2。进入下载页面可以看到:
我第一次下载的是with-docs.zip,觉得解压后看了一下,Spring自身的jar应该是都有了,不过在后面的程序编译时出现:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
没有找到相关的jar包,后来尝试下载dependencies.zip并在里面找到了com.springsource.org.apache.commons.logging-1.1.1.jar包。
总而言之,我也不知道它们这些release包是怎么组织起来的,汗。
3. 编写示例
示例包含一个接口IProgrammingLanguage,用于表示编程语言,两个类JavaLanguage跟PerlLanguage实现该接口用于表示特定的编程语言Java跟Perl。
另外有一个Developer类,用于表示IT开发者。最后,是程序入口所在的Main类。
3.1.接口IProgrammingLanguage.java
package example;
public interface IProgrammingLanguage {
public String whoAmI();
}
3.3.JavaLanguage.java
代码
package example;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Resource r = new FileSystemResource("hellospringworld.xml");
BeanFactory f = new XmlBeanFactory(r);
Developer d = (Developer) f.getBean("DeveloperBean");
String s = d.getCurrentUsingLanguage();
System.out.println("The developer is currently using: "+s);
}
}
运行此程序可以看到输出是:
The developer is
currently using: Perl
现在,假设有一天这个Developer不使用Perl而改用Java了,我们需要做什么?我们并不需要改程序,只需要修改xml文件就行了。
<bean
id="LanguageBean"
class="example.PerlLanguage"></bean>
改成
<bean
id="LanguageBean" class="example.JavaLanguage"></bean>
这就是我目前所理解的使用Spring的好处,即解耦,减少不同的类之间的耦合性。
当然,现在的Spring已经日渐复杂跟强大,其中很多特性我并没有使用过,上面所说都是些粗浅的理解,等待以后使用的过程中有更加深入的认识。
4.源码下载
hellospringworld.zip
最近稍微接触了一些Spring的皮毛,写了个例子,希望对初初初学者有用,高手指正。
1.Spring是什么
网上对Spring以及使用Spring的好处的解释铺天盖地,常常是各个网站之间互相拷贝,而且还引入了一堆的缩写,什么IoC、AOP……
我觉得对跟我一样的初学者而言,可以这么理解:Spring是基于反射机制写的一些包,有了它以后你可以将类的实例化写到一个配置文件里,由相应的Spring包负责实例化。
假设你有一个类A,以前你实例化时要写A a = new A(),现在不用了,你只要写一个xml文件,并按Spring指定的格式配置好,它就能通过反射机制将A的实例返回给你。
至于使用Spring的好处,我会在下面的实例中提到。
2. 下载Spring
http://www.springsource.org/download,目前最新的版本是3.0.2。进入下载页面可以看到:
spring-framework-3.0.3.RELEASE-dependencies.zip | (sha1) | 155.7 MB |
spring-framework-3.0.3.RELEASE-with-docs.zip | (sha1) | 45.0 MB |
spring-framework-3.0.3.RELEASE.zip | (sha1) | 21.4 MB |
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
没有找到相关的jar包,后来尝试下载dependencies.zip并在里面找到了com.springsource.org.apache.commons.logging-1.1.1.jar包。
总而言之,我也不知道它们这些release包是怎么组织起来的,汗。
3. 编写示例
示例包含一个接口IProgrammingLanguage,用于表示编程语言,两个类JavaLanguage跟PerlLanguage实现该接口用于表示特定的编程语言Java跟Perl。
另外有一个Developer类,用于表示IT开发者。最后,是程序入口所在的Main类。
3.1.接口IProgrammingLanguage.java
package example;
public interface IProgrammingLanguage {
public String whoAmI();
}
3.3.JavaLanguage.java
代码
package example;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Resource r = new FileSystemResource("hellospringworld.xml");
BeanFactory f = new XmlBeanFactory(r);
Developer d = (Developer) f.getBean("DeveloperBean");
String s = d.getCurrentUsingLanguage();
System.out.println("The developer is currently using: "+s);
}
}
运行此程序可以看到输出是:
The developer is
currently using: Perl
现在,假设有一天这个Developer不使用Perl而改用Java了,我们需要做什么?我们并不需要改程序,只需要修改xml文件就行了。
<bean
id="LanguageBean"
class="example.PerlLanguage"></bean>
改成
<bean
id="LanguageBean" class="example.JavaLanguage"></bean>
这就是我目前所理解的使用Spring的好处,即解耦,减少不同的类之间的耦合性。
当然,现在的Spring已经日渐复杂跟强大,其中很多特性我并没有使用过,上面所说都是些粗浅的理解,等待以后使用的过程中有更加深入的认识。
4.源码下载
hellospringworld.zip
相关文章推荐
- 【java开发系列】—— spring简单入门示例
- 【java开发系列】—— spring简单入门示例
- 【java开发系列】—— spring简单入门示例
- Java基础系列之三:Apache Ant入门示例
- 【java开发系列】—— spring简单入门示例
- 【java开发系列】—— spring简单入门示例
- Java基础系列之四:Remote Debug入门示例
- Java基础系列之六:CORBA入门示例
- 【java开发系列】—— spring简单入门示例
- Java 集合系列13之 WeakHashMap详细介绍(源码解析)和使用示例
- Java 集合系列16之 HashSet详细介绍(源码解析)和使用示例
- 【java开发系列】—— struts2简单入门示例
- spring基础系列--JavaConfig配置
- Java基础入门笔记-使用变量并打印
- java数字图像处理基础使用imageio写图像文件示例
- Java集合系列(一)—— Collection入门基础概括
- [Linux][入门系列]CentOS 的基础使用-yum使用手册(下):yum安装高版本软件
- Java 集合系列16之 HashSet详细介绍(源码解析)和使用示例
- Java 集合系列之 HashMap详细介绍(源码解析)和使用示例
- Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例