Spring

253 阅读3分钟

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的五大功能模块

image.png

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的主要实现类

image.png

image.png

image.png

IOC思想实现的一些实例:

第一,根据接口的.class来获取对象:

接口:

image.png

方法重写类:

image.png

配置xml文件,注入bean:

image.png

id是bean的唯一标识,不可以重复

class是配置的对象所对应的类型

配置测试类:

image.png

我们可以看到在getbean()函数的参数是Poemservice.class,这种情况适合在bean中只有一个这样的类的情况,当有一个class对应两个不同的bean 就不适合这种情况了。

第二,根据bean的id获取对象,运行测试类。

首先,配置接口文件,书写抽象方法

image.png

其次,书写功能实现类

image.png

然后,书写bean

image.png

最后书写测试类

image.png

同理:第三 当一个类在一个容器中存在不止一个两个或多个bean时

image.png

image.png

运行结果后发现,方法一可以正常运行,方法二发生了报错。

image.png

image.png

第四,根据元素的.class和.id 一起识别bean

image.png

运行成功。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

第五,单例bean两次获取的地址相同

image.png

image.png

第六,多例bean两次获取的地址不相同 在xml中多加一个参数 scope="prototype"

image.png

image.png