利用Spring框架改进J2EE编程

豆豆网   技术应用频道   2008年03月28日  【字号: 收藏本文

内容摘要:本文粗略地概括介绍了IoC,并详细介绍了Spring。Spring框架具有许多功能,其中许多功能在本文中只是点到为止。从基本的依赖注入到复杂的AOP操作,这些组成了Spring的强大功能,这是它的主要优点之一。能够根据问题需要使用或多或少的IoC功能是一个极具吸引力的理念。

  编写一个小框架来解决这一问题会非常容易。我相信大家也都曾这样做过,但为何不让Spring帮我们处理这一问题呢?我不敢保证我能想出一个更整洁、更优雅的解决方案。我们来看Spring框架是如何处理这种样板JDBC场景的。

  Spring支持各种各样的JDBC、Hibernate、JDO和iBatis模板。模板采用样板概念,并将它转换为合法的编程术语。例如,下面的代码片断封装了上面列出的各个步骤:

DataSource ds = (DataSource) bf.getBean("myDataSource");
JdbcTemplate temp = new JdbcTemplate(ds);
List sensorList = temp.query("select sensor.type FROM sensors",
new RowMapper() {
public Object mapRow(ResultSet rs, int rowNum) throws SQLException;
return rs.getString(1);
}
});

  这段简短的代码消除了JDBC编程的冗长,代表了前面提及的样板的思路。请注意我们使用了Spring的IoC来查找该查询的数据源。Spring还支持对已检查异常使用未检查异常;因此许多已检查的JDBC异常会重新映射到通常更有用而且更友好的未检查异常层次结构中。在Spring的上下文文件中配置该数据源类似于下面代码:

<bean id="myDataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>org.gjt.mm.mysql.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://romulus/sensors</value>
</property>
<property name="username">
<value>heater</value>
</property>
<property name="password">
<value>hotshot</value>
</property>
</bean>

  在本例中,我们利用Apache commons工具箱配置了一个基本数据源。但并不是说我们只能使用它。我们可以改变配置,使用在JNDI中配置并装载的数据源。Spring提供了一些实用工具和IoC功能以配置和返回存储在JNDI中的对象。例如,若想配置并使用与JNDI上下文关联的数据源,则可以输入以下代码,替换先前的数据源配置:

来源:BEA    作者:Peter Braswell    责编:豆豆技术应用

正在加载评论...