Spring简介
spring是最受欢迎的企业级Java应用程序开发框架,数以百万的来自世界各地的开发人员使用spring框架来创造性能好,易于测试,可重用的代码
spring框架是一个开源的Java平台,它最初是由ROD JOHNSON 编写的,并且于2003年6月首次发布
spring框架的核心特性是可以用于开发任何Java应用程序,但是在JavaEE平台上构建Web是需要扩展的。spring框架是使j2ee开发变得更容易使用,通过启用pojo编程模型促进良好的编程实践
spring家族
spring framework
spring framework是spring的一个最基本的框架,无论什么样的spring框架都需要在spring framework进行。
spring framework的五大功能模块
spring framework 的特性
特性1:非侵入式;spring framework对应用程序本身的影响非常的小
特性2:控制反转;IOC,程序把所有用到的对象都进行了一个创立,不用自己再手动的一个一个的new。
特性3:面向切向编程,在不修改源码的基础上增强源码的功能
特性4:容器,spring IOC 是一个容器,因为他包含管理组件对象的生命周期。
特性5:组件;spring实现了使用简单的组件配置组合成一个复杂的应用,在spring中可以使用xml和java注解来组合这些插件
IOC 思想
反转控制
反转控制的思想完全颠覆了应用程序组件获取资源的传统方式:反转了获取资源的获取方向,一一改由容器自动将资源推送给需要的组件,开发人员不需要知道容器是如何创建资源对象的,只需要知道提供接受资源的方式即可,极大的降低了学习的成本,提高了开发的效率。
DI
di是ioc的一种表述方式:即组件以一些定义好的方式接受来接受来自容器的资源注入
ioc容器在spring中的实现
1.BeanFactory
这是ioc容器的基本实现,是spring内部使用的接口,面向spring本身,不提供开发者使用
2.ApplicationContext
BeanFactory的子接口,提供更多的高级特性,面向spring的使用者,几乎所有的场合都是用ApplicationContext
3.ApplicationContext的主要实现类
IOC思想实现的一些实例:
第一,根据接口的.class来获取对象:
接口:
方法重写类:
配置xml文件,注入bean:
id是bean的唯一标识,不可以重复
class是配置的对象所对应的类型
配置测试类:
我们可以看到在getbean()函数的参数是Poemservice.class,这种情况适合在bean中只有一个这样的类的情况,当有一个class对应两个不同的bean 就不适合这种情况了。
第二,根据bean的id获取对象,运行测试类。
首先,配置接口文件,书写抽象方法
其次,书写功能实现类
然后,书写bean
最后书写测试类
同理:第三 当一个类在一个容器中存在不止一个两个或多个bean时
运行结果后发现,方法一可以正常运行,方法二发生了报错。
第四,根据元素的.class和.id 一起识别bean
运行成功。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
第五,单例bean两次获取的地址相同
第六,多例bean两次获取的地址不相同 在xml中多加一个参数 scope="prototype"