spring 入门1

一只纯菜鸟的角度....持续更新中。一如既往,求指教,求更正。

 

Spring是一个容器框架是,用以配置和维护bean之间的关系。它可以作用范围很可以很跨整个web项目。在理论上咬文嚼字对于我们这些开发经验少得可怜的菜菜来说,纯属劳民伤财,还是代码来得实在。下面这个实例用spring配置两个实体类(LowerLetterUpperLetter),让后在测试之。下面就开始我们的spring入门

-------------------------------------------导包

我用的是MyEclipse10.0开发,新建项目后,右键项目名--->MyEclipse--->add Spring Capibi...

这样就导好了包,系统还会自动生成spring的配置文件applicationContext.xml

当然也可以像平常一样自己手动导包。

 

-------------------------------------编写代码完整的代码和参考资料在文章结尾的连接中下载

publicinterface ChangeLetter {

        publicvoid execute();

}

-------------------------------------

publicclass LowerLetter implements ChangeLetter {

    private String str;

   

    public String getStr() {

        returnstr;

    }

 

    publicvoid setStr(String str) {

        this.str = str;

    }

 

    publicvoid execute() {

    System.out.println(this.str.toLowerCase());

       

    }

}

----------------------------------

 

publicclass UpperLetter implements ChangeLetter{

   

    private String str;

   

    public String getStr() {

        returnstr;

    }

 

    publicvoid setStr(String str) {

        this.str = str;

    }

 

    publicvoid execute() {

    System.out.println(this.str.toUpperCase());

       

    }

 

}

 

 

--------------------------------------配置spring

<beans

    xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns:p="http://www.springframework.org/schema/p"

    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

 

<bean id="confgUpper" class="cn.bl.service.UpperLetter">

    <property name="str" value="hello world I AM GOOD man"/>

</bean>

 

<bean id="confgLower" class="cn.bl.service.LowerLetter">

    <property name="str" value="IF U DON'T BELEIVE youselef ,who does?"/>

</bean>

</beans>

-----------------------测试之

publicclass Test {

    publicstaticvoid main(String[] args) {

    //  ApplicationContext ac= new FileSystemXmlApplicationContext("applicationContext.xml");

        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");

        ChangeLetter getOne= (ChangeLetter) ac.getBean("confgLower");

        getOne.execute();

        ChangeLetter getother=(ChangeLetter) ac.getBean("confgUpper");

        getother.execute();

    }

}

-----------------结果

if u don't beleive youselef ,who does?

HELLO WORLD I AM GOOD MAN

 

 

 

上例就是用spring,在运行期间动态地把字符串注入了ChangeLetter的实现类的str属性中

我们看到了spring的什么好处呢?(摘抄自资料,未完全理解)

首先,我们的组件并不需要实现框架指定的接口,因此可以轻松的将组件从Spring中脱离,甚

至不需要任何修改(这在基于EJB框架实现的应用中是难以想象的)。

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

Spring的依赖注入机制,可以在运行期为组件配置所需资源,而无需在编写组件代码时就加以

指定,从而在相当程度上降低了组件之间的耦合。

Spring通过依赖注入模式,将依赖关系从编码中脱离出来,从而大大降低了组件之间的耦合,

实现了组件真正意义上的即插即用。这也是Spring最具价值的特性之一。

Spring对于面向接口设计的意义,在于它为面向接口编程提供了一个更加自然的平台。基于Spring开发,程序员会自然而然倾向于使用接口来定义不同层次之间的关联关系,这种自发的倾向性,来自于Spring所提供的简单舒适的依赖注入实现。Spring使得接口的定义和使用不再像传统编码过程中那么繁琐(传统编码过程中,引入一个接口,往往也意味着同时要引入一个Factory类,也许还有一个额外的配置文

件及其读写代码)。

 

Spring从开发者的角度对这些技术内容进行了进一步的封装和抽象,使得应用开发更为简便。在笔者的开发工作中,借助Spring提供的丰富类库,相对传统开发模式,大大节省了编码量。

 

通过以上的讲解相信你和我一样还是一头雾水,没关系,我们把问题记清楚,以后再解决它,继续向前走。下一站:IoC(控制反转 Inversion of Control)/DI(依赖注入 Dependency Injection)

我以为菜鸟的观点总结下:IoC和DI是同一个概念。反转就是控制权由代码转到了外部容器;注入就是组件之间的依赖关系由容器动态地注入到组件中。参考资料中有个有趣的描述通过插入USB设备从电脑拷贝资料的过程来理解依赖注入,摘录之:

在运行时(系统开机,USB 设备加载)由容器(运行在笔记本

中的Windows操作系统)将依赖关系(笔记本依赖USB设备进行数据存取)注入到组件中(Windows

文件访问组件)。

 

下面用代码实现依赖注入的几种常用形式

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值