初涉Spring

2007-11-12  籽藤 

    Spring的大名早已如雷贯耳,但还没有接触过。趁着这几天比较悠闲,小瞄了下Spring的书籍。

先说说FirstExample吧:

我的开发环境是Myeclipse下的,所以开发Spring相当方便。直接新建项目,右击项目名,在Myeclipse项中,再选择导入Spring.

Ok,环境介绍完毕,来看具体代码:

Action.java(接口)

package spring.ex2;

public interface Action {

  public String execute(String str);

}

LowerAction.java

package spring.ex2;

public class LowerAction implements Action {

 private String message;

 public String getMessage() {
  return message;
 }

 public void setMessage(String message) {
  this.message = message;
 }

 public String execute(String str) {
  return (getMessage() + str).toLowerCase();
 }

}

UpperAction.java

package spring.ex2;

public class UpperAction implements Action {
 private String Message;

 public String getMessage() {
  return Message;
 }

 public void setMessage(String message) {
  Message = message;
 }

 public String execute(String str) {
  
  return(getMessage()+str).toUpperCase();
 }

}

bean.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<description>Spring Quick Start</description>
<bean id="TheAction" class="spring.ex2.UpperAction">
<property name="message">
<value>Hello</value></property>
</bean>

<bean id="action2" class="spring.ex2.LowerAction">
<property name="message">
<value>Hello</value></property></bean>
</beans>

OK,现在写个SimpleTest.java来运行:

package spring.ex2;

import spring.ex2.Action;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class SimpleTest {

 public static void main(String args[]){
  
  SimpleTest test=new SimpleTest();
  test.testQuickStart();
 }

public  void testQuickStart() {
 
  ApplicationContext ctx=new FileSystemXmlApplicationContext("bean.xml");
  Action action=(Action)ctx.getBean("TheAction");
  System.out.println(action.execute("Rod Johnson"));
  action=(Action)ctx.getBean("action2");
  System.out.print(action.execute("jeckj"));
 }
}

以上文件都完成之后,可以在eclipse中以Java应用程序的方式运行了。

在控制台的输出结果是:

HELLOROD JOHNSON
hellojeckj

这正是我们所要的。现在我们要分析一下代码:

    在最终要运行的类SimpleTest.java中,并没有提到所要调用的两个类名,而是用“TheAction”,“action2”,而这两个名称与class文件的关联是在bean.xml中定义的。也就是说,如果要进行重构或修改数据,可以不用接触底层的类,而是修改bean.xml文件。

    在我们所有的程序代码中(除测试代码(SimpleTest)之外),并没有出现Spring中的任何组件(即无需导入Spring包)。

     客户的运行代码(这里就是我们的SimpleTest类)仅仅面向接口编程,而无需知道实现类的具体名称。同时, 我们可以很简单的通过修改配置文件来切换具体的底层实现类。

上面所说的这些,对于我们的实际开发有何帮助?

Ø 首先,我们的组件并不需要实现框架指定的接口,因此可以轻松的将组件从Spring中脱离,甚至不需要任何修改(这在基于EJB框架实现的应用中是难以想象的)。

Ø 其次,组件间的依赖关系减少,极大改善了代码的可重用性。

使用Spring大大降低了组件之间的耦合,实现了组件真正意义上的即插即用。这也是Spring最具价值的特性之一

Ø 面向接口编程。


 

330°/3300 人阅读/0 条评论 发表评论

登录 后发表评论