JR 精品文章 - Spring入门
AD: jr (at) javaresearch.org


首页 | 动态 | 文章 | FAQ  | 新闻 | 下载 | 代码 | 工作 | 调查 | 术语 | 站点 | 图书 | 论坛 | 帮助 | 全部  

TOP | 交流 | 软件 | 专栏 | 开源 | 译/著 | 源码 | API  | 推荐 | FTP  | 积分 | 统计 | 搜索 | Blog | 我们  
首页 » 研究文集 » 开发框架 搜索标题相关文章 搜索标题相关文章    评论此文章 发表评论     开始监控此文章 开始监控   加入收藏夹  加入收藏夹
Spring入门
包子 原创   更新:2008-02-24 04:37:40  版本: 1.0   

马上毕业了,找工作找的闹心死了,虽说大连那噶的对日开发的软件血多,但是迫于对应届毕业生的需求太少,至今没有把自己卖出去,[cry][cry][cry],今天有个网友问我Spring是什么东西,给他写了个word文档,想起很久没有看jr了,希望对各位像我一样的新手能有所帮助,一下内容都是小弟手写的,小弟也不是很深入的理解Spring,希望各路大虾不要笑话我,在一次又一次的笔试过了面试被淘汰之后希望3月份回去能越挫越勇,继续卖身……废话说太多了,下面开始扯皮:


觉得看这个内容没重点的朋友可以去 hi.baidu.com/j2eedoc 找有颜色的相同文章(这里没法给重点语句标识颜色)



要明白Spring是干什么的,或者说是Spring为了什么被创造出来,这个十分重要,简单的说就是为了“更方便的帮助我们创造对象”

来回顾一下j2ee中创建对象的几种模式(注意不是j2se):
1.    使用new 来构造对象,此处不具体说明了,坏处是接口和实现类紧密耦合
通常只是创建vo(pojo)时才使用
2.    使用Factory 工厂类来创建对象,解决了1 里 实现类和接口紧密耦合的问题,但是带来了新的问题,当接口很多时代码量很大
3.    使用Spring(其实就是个大的Factory)来构造对象

首先我们创建一个接口(我就不截图了)
package com.lizhe.interf;

public interface Fruit {
    public void eat();
}

此接口定义一个“水果”接口,然后定义了一个方法“吃”

再定义两个实现类“苹果”和“橘子”

package com.lizhe.Impl;

import com.lizhe.interf.Fruit;

public class Apple implements Fruit {

    public void eat() {
        // TODO Auto-generated method stub
        System.out.println("吃苹果");
    }

}
----------------------------------------------------------------------------------------------------------

package com.lizhe.Impl;

import com.lizhe.interf.Fruit;

public class Orange implements Fruit {

    public void eat() {
        // TODO Auto-generated method stub
        System.out.println("吃橘子");
    }

}
----------------------------------------------------------------------------------------------------------


如果我们要调用eat这个方法就要得到一个“水果”接口的实例

如上所述我们有3种方法
1.    紧密耦合的new方法
Fruit f=new Apple();
f.eat();
2.    使用工厂的Factory 方法
Fruit f=Factory.getApple();
f.eat();
3  使用Spring的Ioc 方法
   首先配置一个Spring配置文件applicationContext.xml
内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    <bean id="fru" class="com.lizhe.Impl.Apple"></bean>
    <bean id="fru2" class="com.lizhe.Impl.Orange"></bean>

</beans>

注意此配置文件只做了一件事,就是将com.lizhe.Impl.Apple和com.lizhe.Impl.Orange重新命名为fru和fru2,这里只给出了实现类,而并有提及这两个类使用的是哪两个接口,读者可能有疑问,大家往下看很容易明白

接着我们在一个普通的j2se类中测试我们的程序

package com.lizhe.test;

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

import com.lizhe.interf.Fruit;

public class Test {
    public static void main(String args[]) {
        ApplicationContext ctx = new FileSystemXmlApplicationContext("/src/applicationContext.xml");

        Fruit f = (Fruit) ctx.getBean("fru");
        Fruit f2= (Fruit) ctx.getBean("fru2");
        f.eat();
        f2.eat();
    }
}

注意下面这两句
Fruit f = (Fruit) ctx.getBean("fru");
Fruit f2= (Fruit) ctx.getBean("fru2");
这两句使用fru和fru2就得到了Apple和Orange的实例,并且标注了他们返回的实例的接口类型是fruit,当我们要修改项目的时候,只需要修改applicationContext.xml中的
<bean id="fru" class="com.lizhe.Impl.Apple"></bean>
    <bean id="fru2" class="com.lizhe.Impl.Orange"></bean>
这两句就可以获得不同的实例,大大降低了代码的耦合度,当接口很多的时候也不会产生很大的代码量,这正是Spring的方便所在

不知道不觉凌晨4点了,虽然躺着打字真不舒服,不过还是要补充两句
1 对于控制反转这个名字感觉有些莫名其妙,没弄明白它反转了什么,好像是说“用什么容器就构造什么”,而不是“容器用什么自己就得构造什么”
2 依赖注入 个人认为比较恰当,就是说“组建之间的依赖关系由容器运行时才决定,由容器动态的将某种依赖关系注入到组件当中”,当程序没有运行,脱离容器的时候,他们几乎可以被认为是没有任何耦合关系的,只有当程序运行时,容器调用XML配置文件的时候,才将两个程序关联在一起。这大大降低了代码间的耦合程度!也就是SPRING的精髓所在。

一开始看书的时候感觉很晦涩,其实就是一张纸,说破了其实很容易理解。

只是....
不知道年轻可不可以注入....
岁月能不能够反转....




版权声明   给作者写信
本篇文章对您是否有帮助?  投票:         投票结果:     25       0
作者其它文章: 作者全部文章
评论人:包子 发表时间: Sat Feb 23 23:57:57 CST 2008
看看自己2005年发表在这的日记真是感慨呀,当时貌似还在学hello world,当时做梦都想写gui的东西,只要不是输出到控制平台的就好,真是时光如水,生命如歌了,当初死都不愿意学网页设计方面的,现在是天天SSH(Spring+struts+hibernate),当初不知道啥叫数据库,以为“数据”就存以文件的形式存硬盘上呗,还非得整个库,想象中数据库就是一个大文件夹,里边放满了N多的文本文件(狂汗),唉~~悲哀呀,前两天玩魔兽世界,会里不少大学生,突然发现自己已经不是大学生了,实在是悲哀呀!!!

我不想我不想不想长大,长大后就会那啥那啥,看看十年的哥们们一个又一个离开沈阳,远走他乡,实在是惆怅了许多,当初迈出家门去大连念书的时候我也没有想到这么多年(4年也挺多了,没准以后会更多)在家住的时间莫名其妙的就没有在外边多了,一年就在家不到3个月。

当年天天魔兽世界的老冯,每天睡觉到中午12点,然后奋战到深夜,如此往复,结果现在在新玛特上班每天8点起床,10点到家,如此啊就也往复。

常年驻守沈阳的刘猪猪今年居然跳槽去了北京,放假回来发现突然少了一口人,不对是一口猪心理实在是悲哀呀!

当我哥说出“北京奥运会结束,再开奥运会我就30了”的话时我更是悲哀呀!!!


我真想当一辈子学生…………
评论人:包子 发表时间: Sat Feb 23 23:58:57 CST 2008
看看自己2005年发表在这的日记真是感慨呀,当时貌似还在学hello world,当时做梦都想写gui的东西,只要不是输出到控制平台的就好,真是时光如水,生命如歌了,当初死都不愿意学网页设计方面的,现在是天天SSH(Spring+struts+hibernate),当初不知道啥叫数据库,以为“数据”就存以文件的形式存硬盘上呗,还非得整个库,想象中数据库就是一个大文件夹,里边放满了N多的文本文件(狂汗),唉~~悲哀呀,前两天玩魔兽世界,会里不少大学生,突然发现自己已经不是大学生了,实在是悲哀呀!!!

我不想我不想不想长大,长大后就会那啥那啥,看看十年的哥们们一个又一个离开沈阳,远走他乡,实在是惆怅了许多,当初迈出家门去大连念书的时候我也没有想到这么多年(4年也挺多了,没准以后会更多)在家住的时间莫名其妙的就没有在外边多了,一年就在家不到3个月。

当年天天魔兽世界的老冯,每天睡觉到中午12点,然后奋战到深夜,如此往复,结果现在在新玛特上班每天8点起床,10点到家,如此啊就也往复。

常年驻守沈阳的刘猪猪今年居然跳槽去了北京,放假回来发现突然少了一口人,不对是一口猪心理实在是悲哀呀!

当我哥说出“北京奥运会结束,再开奥运会我就30了”的话时我更是悲哀呀!!!


我真想当一辈子学生…………
评论人:collectionset 发表时间: Mon Feb 25 20:21:57 CST 2008
this is good 感觉不错
评论人:zhjdut 发表时间: Tue Feb 26 21:25:50 CST 2008
it is very good
评论人:red-vampire 发表时间: Tue Apr 01 11:28:52 CST 2008
感觉楼主当年就挺有才的么,[:D]
评论人:zf534685796 发表时间: Mon May 05 14:08:36 CST 2008
dfdfgg
评论人:zf534685796 发表时间: Mon May 05 14:10:45 CST 2008
[java][:D][call][:@][kiss]

这个文章共有 7 条评论
主题: struts出错处理小探 上一篇文章
返回文章列表 返回〔开发框架〕
下一篇文章 主题: Struts+Spring+Hibernate


文字广告链接
        自主、快速定制基于JAVA的B/S业务系统          重量级企业在线自定义WEB报表平台
        Excel制表、零代码发布、打印、图表结合——快逸报表,免费、稳定、功能强大的java工具
        技术圈: 关于Java、dotNet、PHP、Ruby、奇客、Web2.0等更多资讯博客精选文章

关于 JR  |  版权声明  |  联系我们 

©2002-2006 JR 版权所有 沪ICP备05019622号