(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 等众多的框架。
(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框架相关的所有类Spring 是个轻量级的框架,但是它的功能却很庞大,String 框架的所有组成如图所示。
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是一种编程思想,由主动的编程转到被动的接收
云 祁 认证博客专家 Flink Spark 数据中台 我是「云祁」,一枚热爱技术、会写诗的大数据开发猿,专注数据中台和 Flink / Spark / Hive 等大数据技术,欢迎一起交流学习。