| Spring入门 |
|
包子 原创 更新:2008-02-24 04:37:40 版本: 1.0
|
|
马上毕业了,找工作找的闹心死了,虽说大连那噶的对日开发的软件血多,但是迫于对应届毕业生的需求太少,至今没有把自己卖出去,![[cry]](/faces/9.gif) ![[cry]](/faces/9.gif) ,今天有个网友问我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的精髓所在。
一开始看书的时候感觉很晦涩,其实就是一张纸,说破了其实很容易理解。
只是.... 不知道年轻可不可以注入.... 岁月能不能够反转....
|
|
|
评论人:包子
|
发表时间: 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
|
感觉楼主当年就挺有才的么,
|
|
|
评论人:zf534685796
|
发表时间: Mon May 05 14:08:36 CST 2008
|
|
dfdfgg
|
|
|