Spring简介
- 2002年,首次推出了Spring框架的雏形:interface21框架
- Spring框架是以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版。
- Rod Johnson , Spring Framework创始人,著名作者。该作者是悉尼大学音乐博士毕业,并不是计算机专业。
- Spring理念:使现有的技术更加容易使用,本身是一个大杂烩。
- Spring的出现解决了企业级开发的复杂性
Spring的优点
- Spring是一个开源的免费的框架(容器)
- Spring是一个轻量级的、非入侵式的框架
- 控制反转(IOC),面向切面编程(AOP)
- 支持事务的处理,对框架整合的支持!
Spring系列路线
- Spring Boot——Build Anything(构建一切)
- Spring Cloud——Coordinate Anything(协调一切)
- Spring Cloud Data Flow——Connect Anything(连接一切)
IOC思想
程序由原本的主动创建对象,变更成被动的接收对象。导致整体架构没变,核心业务变更。
对象由Spring来创建,管理,装配
IOC本质
控制反转IOC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IOC的一种方法,也有人认为DI只是IOC的另一种说法。没有IOC的程序中,我们使用面向对象编程,对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序控制,控制反转后将对象的创建转移给第三方,个人认为所谓的控制反转就是:获得依赖对象的方式反转了(这里的依赖对象指的是程序执行业务时,具体执行哪一种业务)
官方文档的解释是:控制反转是一种通过描述(XML或者注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是IOC容器,其实现方法是依赖注入(Dependency injection,DI).
翻译一下:控制反转就是程序本身根据外部获取的对象来动态的做出决策并执行相应的业务。
IOC创建对象的三种方式
将类绑定进Spring配置文件,在对被绑定的类创建对象的时候,IOC会走默认的无参构造方法,如果是有参构造那么不对起加以处理的话会导致配置出错。
1、通过下标引用
<bean id="user" class="com.darling.Pojo.User" >
<constructor-arg index="0" value="张三" />
</bean>
2、通过类型赋值(具有局限性,不推荐)
<bean id="user" class="com.darling.Pojo.User" >
<constructor-arg type="int" value="张三" />
</bean>
3、通过对应参数名创建
<bean id="user" class="com.darling.Pojo.User">
<constructor-arg name="name" value="张三" />
</bean>
总结:在配置文件加载的时候,在配置文件中绑定的类就已经初始化了
Spring配置
有了解价值的如下
1、别名标签
给Bean标签中的id属性起别名,这个别名可以在该绑定类被调用的时候使用
<!--name属性为原来名字,alias为定义的别名-->
<alias name="userOld" alias="userNew" />
2、导入标签
功能在面向对人开发的时候,将不同的人独立开发xml配置文件合并成一个使用。
<!--resource属性为被导入的xml文件-->
<import resource="applicationContext.xml" />
3、Bean标签
将类引入配置文件中,Spring会对其进行初始化并创建对象,当然是单例的。
<!--id属性为这个bean的唯一标识,可以根据id名找到被引用的类
class为bean的全限定名,全限定名称就是:包名+类名
name是为这个bean标签代码块起别名使用的,这个name属性非常强大,使用此可以代替专门起别名用的标签,
当然也起多个别名,中间使用空格,逗号,分号进行分割
-->
<bean id="userOld" class="com.darling.Pojo.User" name="userNew">
</bean>