1.Spring框架的历史.
Rod Johnson,Spring Framework创始人,著名作者。
Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE full-stack(一栈式) 轻量级开源框架。
Rod在悉尼大学不仅获得了计算机学位,同时还获得了音乐学位。更令人吃惊的是在回到软件开发领域之前,他还获得了音乐学的博士学位。
有着相当丰富的C/C++技术背景的Rod早在1996年就开始了对Java服务器端技术的研究。他是一个在保险、电子商务和金融行业有着丰富经验的技术顾问,同时也是JSR-154(Servlet2.4)和JDO2.0的规范专家、JCP的积极成员,是Java development community中的杰出人物。
2.Spring的官网:
3.Spring的官方文档:
自学成神>>>>官方文档
4.使用Spring框架可以让我们有什么好处:
- 使Java方法在数据库事务中执行,而不必处理事务API。
- 使本地Java方法成为HTTP端点,而不必处理Servlet API。
- 使本地Java方法成为消息处理程序,而不必处理JMS API。
- 使本地Java方法成为管理操作,而不必处理JMX API。
- …
5.使用Spring框架可以解决什么问题:
Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。
Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。
Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。
因此, Spring不仅仅能应用于JEE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。
6.Spring框架的组成:
7.IOC(Inversion of Control)控制反转
- 定义:
控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。
- 概述:
Spring容器中使用到的原则就是控制反转,我们之前写的代码中对象实例都是直接通过我们自己使用new关键字来创建,我们对于对象来说就是绝对的霸主,但Spring框架中使用容器来帮助我们管理项目中的类的创建,这样我们的控制权就给了spring容器,类似一种反转,所以称为控制反转,我们控制类的创建被spring取代了.
///
Spring容器管理对象
对象的创建和管理交给容器完成
当我们需要实现具体业务时,只需要从容器中获取相关对象即可
传统方式:
对象的创建和管理由程序员手动完成
对象的创建和管理方式发生了反转,由程序员变成了程序(容器)
8.Spring容器管理对象和获取入门案例.
- 创建Maven项目,导入Spring依赖:
- 创建实体类(Person)
- 定义spring容器:
- 使用bean标签来定义一个Person对象:
- 测试代码:
@Test
public void m1(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
Person person = (Person) context.getBean("person");
// Person person = context.getBean(Person.class);第二种获取的方式
System.out.println(person);
}
- 总结:
ApplicationContext对象 | 容器对象 |
---|---|
ClassPathXmlApplicationContext对象 | 加载容器配置文件 |
getBean() | 通过传入容器里面定义的bean标签的id来获取对象/或者通过反射传入Class |
ApplicationContext | 对象在容器被加载时通过无参构造创建 |
BeanFactory容器,是ApplicationContext的父接口 | 对象只有在获取时才会被创建 |
容器中类的创建是单例模式,此时有scope属性来设置 | singleton->单例 prototype->多例 |