打印本文 打印本文 关闭窗口 关闭窗口
exploring spring
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2652  更新时间:2009/4/25 0:44:55  文章录入:mintao  责任编辑:mintao

连续看 spring framework 两天了,总算对 spring 有一点点的了解了,也算是有那么一点点的收获吧,写点东西,也算是对理解概念做一番总结吧,初看 spring 的时候总是被它的两个主要概念 IoC AOP 搞的晕头转向,于是先忽略这些抽象的概念,通过一些具体的例子来加强理解吧,看的是一本 Spring Guide 的电子书,好歹也是中文的,理解起来要快一点了。

一开始的时候是在搞 JdbcTemplate,这是一个很好理解的概念,但是程序怎么也调不通过,最后才发现,原来是对 spring 基础知识的缺乏而导致的,算了,直接跳过,进行后面的基础知识学习了。 JdbcTemplate 概念其实很好理解,提供了对 Jdbc 的一种封装,简化一些 Jdbc 操作的冗余代码,思路和 MS DotNet Enterprise Library 中的 Data Access Application Block 类似,在 XML 文件中配置数据库的连接信息,将数据库操作封装成一个类,可以进行返回 ResultSet 和仅仅操作而不返回记录的操作。

用一段代码来表示其不返回记录的操作方式:

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update("UPDATE user SET age = 10 WHERE id = ''''erica''''");

再用一段代码来表示其返回记录的方式:(使用的是PreparedStatement)

final List userList = new ArrayList();
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.query(

"SELECT name, sex, address FROM user WHERE age > 18",

new RowCallbackHandler() {

public void processRow(ResultSet rs) throws SQLException {

User user = new User();

user.setId(rs.getString("name"));

user.setSex(rs.getString("sex"));

user.setAddress(rs.getString("address"));

userList.add(product);

}

}

);

spring 的一个核心概念就是 IoC (Inversation of Control) Martin Fowler 成为 Dependency Injectionspring 的核心部分包含了一个 IoC 容器。说白了 IoC 就是由容器控制程序之间的关系,而非传统实现有程序操纵。控制反转就是将控制权由应用程序代码中转到了外部容器,控制权的转移即所谓的反转。在 spring 中,我们只需要写 Bean 的接口代码,具体子类的实现可以通过 XML 或者其它的配置实现,以后维护时只需要修改配置文件而不是修改源代码。这样我们就把很多原本在编译期完成的任务转移到运行期来进行,很大程度上的提高了程序的灵活性。spring 也是一个无侵入式的高扩展性框架,即无须代码中涉及 spring 的专有类,即可将其纳入 spring 进行管理,也就是说,当有一个更好的 IoC 容器出来时,不需付出太大的代价即可实现迁移,这在 EJB 这样的高侵入式框架中简直就是一个恶梦。

[1] [2] [3] [4]  下一页

打印本文 打印本文 关闭窗口 关闭窗口