`
stick:goal
  • 浏览: 4768 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论
阅读更多

    今天开始学习Spring.听闻这个颇为流行的框架已经很久了.之前也写了个简单模拟的IoC容器.所以对Spring充满向往和好奇(⊙﹏⊙b汗).今天主要是学习不得不提的几个概念和如何使用Spring框架.

    首先是Spring框架.并不是我之前理解的仅仅是个IoC容器.事实上它是一个基于IoC和AOP构造多层J2EE开发系统的框架.声称是一个轻量级的框架.它以非侵入的方式管理代码.因为使用IoC实现了解耦,它得以组织起其他框架.此外事实上,它还提供了其他的很多企业级服务(JNDI,JMS,持久化,事务管理服务等).如果以提供服务多少为评价标准的话,Spring可以称为重量级.当然,单纯以我们一般使用的spring-core包论,是轻量级的.

    然后,IoC(Inversion of Control)机制,反向控制是指对象的生命周期不再由调用者控制而是反转到了容器.幸而之前写过手工IoC容器.大致知道容器内部如何创建对象,提供对象(没写销毁).下一个问题是,容器怎么知道创建什么样的对象?当然是配置文件(我们用的是XML).在其中写入<beans>标签下写入<bean>标签指定它的id和class属性,(根据之前的手工IOC推测)id用于标识创建后存入容器里的对象,class则是用于反射得到对象.这是IoC负责的范围.

   下一个概念是DI(dependency injection),依赖注入.容器中已经有了需要的bean了,下一步是把bean给有需求的.这个过程就是依赖注入.在调用者类中,写入一个私有属性(一般为接口方便扩展),加入setter,就可以在需要的时候通过setter把内容给它.(这个是设值注入.如果是构造注入,  就是将私有属性作为构造器的参数,直接注入到构造器中).

   事实上,个人理解,解耦的过程既是将对象读到容器,再在适合的时候注入到类中.反射机制扮演的角色就是使Spring可以非侵入的方式来提供服务.

   如何使用Spring框架.还是那么几步,下载源码,加入Java包,然后写配置文件,然后使用.配置文件提供了很多的功能,因而相当灵活.比如提供了设值注入和构造注入,提供lazy-init,提供scope来决定是否为prototype或者singleton(我才知道prototype是设计模式,scope默认的是singleton),提供了自动装配的方式(autowire=byName,byType,constructor,autodetect).

   下午还尝试看一些介绍SpringIoC的文章,大块大块的代码搞得我有点晕乎乎的.收获还是有的,至少知道了BeanFactory和ApplicationContext等 Context的区别.BeanFactory定义的是基本的接口,ApplicationContext等则是在此基础上做的强化,提供更多的服务.因此一般都是直接用Context.还了解到,虽然用的很多是xml,但是只是一种数据源其实还可以用到FileSystem,DB等等.只要有相应的ApplicationContext就可以.

   OK,期待明天...

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics