文章目录
一、Spring 简介
1、Spring 概述
2、Spring Framework 下载
3、Spring 框架组成
二、Spring 优点
三、Spring 两大核心技术
四、Hello Spring
五、思考
一、Spring 简介
1、Spring 概述
(1)Spring 是一款开源的免费框架,是一个轻量级控制反转(IOC)和面向切面(AOP)的 JAVA EE 框架,轻量级是指不依赖于容器就能运行的。Spring 框架最初的作者是Rod Jahnson,现在已经被Pivotal Software公司收购,而Pivotal Software公司的东家正是大名鼎鼎的虚拟化提供商VMWare。
(2)一般所谓的 Sping 指的仅仅是Spring旗下的spring framework这一款产品,在 Spring 被 Pivotal
Software 公司接手之后,相继研发出了多款产品,其中的Spring Boot、Spring Could已经成为了当前互联网环境下的佼佼者。
- Spring Boot是一个整合Spring各项功能的中间件,用于快速的开发Spring应用。
- Spring Cloud是为了应对日益增长的业务需求,而开发出的一套完整的基于微服务的分布式解决方案。
- Spring Framework、Spring Boot、Spring Cloud这三款框架的依赖是递增的,也就是说Spring - Could的基础是Spring Boot。
- Spring Boot的基础是Spring Framework,学习顺序应该是Spring Framework>Spring Boot>Spring Cloud。
(3)Spring 框架是使用最广泛的轻量级 JAVA EE 框架之一,它以 IOC、AOP 为主要思想,能够协同 Struts2、Hibernate、WebWork、JSF、iBatis 等众多的框架。
2、Spring Framework 下载
(1)Spring的官网是https://spring.io,通过http://repo.spring.io/release/org/springframework/spring可以下载Spring Framework(以后简称Spring)的开发包,如版本Spring 5.1.6,下载好jar包之后解压出的目录结构如下:
- docs:开发文档
- schema:spring框架对于xml文件的校验采用了schema的方式,该文件夹中是schema文件。
- libs:jar包,保存了spring框架的所有jar包。
- 注意:libs中保存的jar包分为3类,分别是文档jar包,源代码jar包,和编译之后的class文件jar包,我们以前导入的其他框架jar包都是最后一种class文件jar包。
(2)spring中常用jar包:
- Spring AOP:Spring的面向切面编程,提供AOP(面向切面编程)的实现
- Spring Aspects:Spring提供的对AspectJ框架的整合
- Spring Beans:Spring IOC的基础实现,包含访问配置文件、创建和管理bean等。
- Spring Context:在基础IOC功能上提供扩展服务。
- Spring Context Support:Spring context的扩展支持,用于MVC方面。
- Spring Core:Spring的核心工具包
- Spring expression:Spring表达式语言
- Spring Instrument:Spring对服务器的代理接口
- Spring Instrument Tomcat:Spring对tomcat连接池的集成
- Spring JDBC:对JDBC 的简单封装
- Spring JMS:为简化jms api的使用而做的简单封装
- Spring orm:整合第三方的orm实现,如hibernate,ibatis,jdo以及spring 的jpa实现
- Spring oxm:Spring对于object/xml映射的支持,可以让JAVA与XML之间来回切换
- Spring test:对JUNIT等测试框架的简单封装
- Spring tx:为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理。
- Spring web:包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。
- Spring webmvc:包含SpringMVC框架相关的所有类
3、Spring 框架组成
Spring 是个轻量级的框架,但是它的功能却很庞大,String 框架的所有组成如图所示。
二、Spring 优点
- 低侵入式设计
- 独立于各种应用服务器
- 依赖注入特性将组件关系透明化,降低了耦合度
- 面向切面编程特性允许将通用任务进行集中式处理
- 与第三方框架的良好整合
三、Spring 两大核心技术
- 控制反转(IoC:Inversion of Control ) /依赖注入(DI:Dependency Injection )
- 面向切面编程(AOP:Aspect Oriented Programming)
四、Hello Spring
1、导入jar包,代码如下:
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.9.RELEASE</version> </dependency>
2、在pojo包下创建实体类,代码如下:
public class Hello { private String name; public Hello() { } public Hello(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void show(){ System.out.println("Hello,"+name); } @Override public String toString() { return "Hello{" + "name='" + name + '\'' + '}'; } }
3、在resources包下编写Spring的配置文件,代码如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--bean就是一个java对象,由Spring管理和创建--> <bean id="hello" class="pojo.Hello"> <property name="name" value="Spring"/> </bean> <!--bean就是一个java对象,由Spring管理和创建--> <bean id="hello2" class="pojo.Hello"> <property name="name" value="WestOS"/> </bean> <!--// Hello hello2 = new Hello();--> <!--// hello2.setName (WestOS)--> </beans>
4、在test包下编写测试类,代码如下:
import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class HelloTest { @Test public void test(){ //解析beans.xml配置文件,生产管理相应的Bean对象; ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml"); //通过Bean得到这个对象的实体 Hello hello = (Hello)context.getBean("hello2"); hello.show(); } }
五、思考
Hello对象是如何创建的?
- Hello对象是由Spring创建的
- beans.xml ——> 管理bean,Java对象,Spring就像一个容器,存放了许多的对象
- 解析配置文件
- 通过反射创建对象并设置值
Hello对象的属性是如何设置的?
- Hello对象的属性是由Spring容器设置的
这个过程就叫控制反转:IOC
- 控制:谁来控制对象的创建?
原来:程序猿来控制
使用Spring后:Spring来控制
- 反转:程序本身不创建对象了,编程被动接收对象
依赖注入,DI:本质就是利用set方式来注入的
IOC是一种编程思想,由主动的编程转到被动的接收