传智播客——传说中最复杂的框架——Spring(一)

听工作的同学说struts和hibernate都挺简单的,三大框架中最复杂的框架是Spring,刚开始不以为然,后来接触到了struts,很吃力的学完了struts,接着跟着组织混过了hibernate,这两大框架我已经学的精疲力尽了,这个时候再回头来想同学的话,心里顿时凉了一半。

因为觉得肯定很难,所以我一天下来努力不让自己走神,晚上回来我可以光荣的大叫一声:Spring,不难,起码比hibernate简单
现在来看看传说中的Spring究竟是个什么东西
一 Spring的概念
1 IOC,对象控制方式反转
什么叫对象控制方式反转,想想我们刚刚学过的OA流程,Action调用Service,Service调用Hibernate,Hibernate调用数据库,每一层都要实现对引用层的引用
比如在Action里需要这么一行代码
EmployeeService es=new EmployeeServiceImpl();
如果没有这一行代码就无法实现对Service层的调用。
如果Spring称自己的调用方式是我们现在调用方式的反转的话,那这句话的意思就是可以直接调用Action而不用去理会其中各个层次间的调用关系。
2 DI 依赖注入,据说Spring作者觉得这个解释比IOC更好,当然我是不觉得好在哪里的,甚至不觉得好。。。
二 Spring概念我的理解
在我看来Spring所做的工作最简单的说就是用XML文件的方式配置了多个类之间的相互调用关系和属性赋值。
我觉得Spring的核心就在XML文件上,
<?xml version="1.0"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/200 1/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework .org/schema/beans/spring-beans-2.5.xsd "> <!-- 欢迎服务,配置bean --> <bean id="greetingService" class="cn.itcast.spring.service.GreetingService" init-method="ini"> <property name="greeting" value="hello world" /> <property name="greeting2" value="tom" /> <property name="bs" ref="byeService"/> </bean> <!-- 欢送服务类 --> <bean id="byeService" class="cn.itcast.spring.service.ByeService" scope="singleton"> <property name="bye" value="byebye" /> </bean> </beans>

从这个XML文件可以看到配置了两个类,一个类是GreetingService,另一个类是ByeService,以前需要在greetingService里持有一个对ByeService的引用那个语句被 <property name="bs" ref="byeService"/>代替
从这里可以看到对另外一个类的引用可以完全不用去修改源代码,这是多么惬意的一件事情,
这是一个最简单的HelloWorld,下面详细的学习各种细节
二 各种基础细节
1工厂设计模式,创建分发各种bean。配置好它们之间的写作关系,参与bean的生命周期。
BeanFactory factory = new XmlBeanFactory(new FileInputStream("beans.xml"));
bean工厂只把bean的定义信息载进来,用到的时候才实例化。
factory.getBean("mybean");就可得到一个bean。
2 使用应用上下文
ApplicationCotext,spring高级的容器。功能强大:
1.提供文本信息解析工具,包括对国际化支持。
2.提供载入文件资源的通用方法,如图片。
3.可以向注册为监听器的bean发送事件。
3另外两种加载XML文件的方式,仅仅是加载方式不同
ApplicationContext context = 
   new FileSystemXmlApplicationContext("
   c:/foo.xml");
ApplicationContext context = 
   new ClassPathXmlApplicationContext("
   foo.xml");
3 与hibernate相似的地方
与bean工厂的另一个重要区别是关于单例bean如何被加载。bean工厂延迟加载所有bean,直到getBean()
方法被调用。应用上下文会在启动后预载入所有单例bean.这样可确保应用不需要等待他们被创建,这和hibernate里面实体配置文件里面的lazy属性差不多。
4Spring工作流程
1 容器寻找bean的定义信息并实例化。
2 使用依赖注入,spring按bean定义信息配置bean的所有属性。
3.若bean实现了BeanNameAware接口,工厂调用Bean的setBeanName()方法传递bean的ID。
4.若bean实现了BeanFactoryAware接口,工厂调用setBeanFactory()方法传入工厂自身。
5.若BeanPostProcessor和bean关联,则它们的postProcessBeforeInitialization()方法被调用。
6.若bean指定了ini-method方法、,它将被调用。
7.最后,若有BeanPostProcessor和bean关联,则它们的postProcessAfterInitialization()方法被调用、。
学习总结:一天学下来深有感触,Spring基本上稍微走神一点都会跟不上,学习无他认真才是王道

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值