Spring 是一款主流的 Java EE 轻量级开源框架 ,Spring 由“Spring 之父”Rod Johnson 提出并创立,其目的是用于简化 Java 企业级应用的开发难度和开发周期。
具体来说Spring是轻量级的IoC(Inverse Of Control:控制反转)和AOP(Aspect Oriented Programming:面向切面编程)的容器框架。Spring之所以成功就是来源于这2个核心理念,而非技术,IoC是其核心,而AOP是重要的功能。
它提供了表现层SpringMVC和持久层Spring JDBCTemplate以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,所以逐渐称为Java最成功的的框架。
时至今日,Spring已经不单单是一项单纯的应用框架技术了,而是已经成发展成了以Spring Framework为基础的一个大家族了,例如 Spring Framework、Spring MVC、SpringBoot、Spring Cloud、Spring Data、Spring Security 等,其中 Spring Framework 是其他子项目的基础。这些项目现如今已经涵盖了大多数的领域。
创始人:Rod Johnson(畅销书:Expert One-on-One J2EE Design and Development(2002年出版)、Expert One-on-One J2EE Development without EJB(2004年出版)(Spring的雏形) )
目的:最大的目的就是使JavaEE开发更加容易,是为了解决企业应用开发的复杂性而创建的。
历程
理念:Spring致力于提供一个以统一的、高效的方式构造整个应用,并且可以将单层框架以最佳的组合揉和在一起建立一个连贯的体系。Spring不和现有的解决方案竞争,而是致力于将它们融合在一起。
Spring版本
SSM框架:由Spring+SpringMVC+Mybatis组成
Spring家族:以Spring Framework 为基础的众多组件:Spring Framework、Spring MVC、SpringBoot、Spring Cloud、Spring Data、Spring Security 等等

创建Spring父模,创建后删除src文件
创建子模块:NEW MODULE
查看pom文件
在pom文件中添加依赖(在父模块的依赖,所有子模块都可以使用。在子模块的依赖只能子模块使用)
需要注意版本,spring6是最新版本,它需要JDK17以上版本才能使用,且其中的 javax开头的API 全部被 jakarta 代替了
<dependencies>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>5.3.21version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>6.0.3version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-testartifactId>
<version>5.3.21version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-testartifactId>
<version>6.0.3version>
dependency>
<dependency>
<groupId>org.junit.jupitergroupId>
<artifactId>junit-jupiter-apiartifactId>
<version>5.9.1version>
<scope>testscope>
dependency>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.13.2version>
<scope>testscope>
dependency>
dependencies>
编写类进行测试
public class HelloJava {
public void test(){
System.out.println("Hello Java");
}
}
将类放入到IOC的容器中,让Spring容器管理类的创建(需要创建一个XML文件,放到上下文路径中)

<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 id="helloJava" class="com.yu.test.HelloJava"/>
beans>
获取类
@Test
public void test(){
//加载XML文件
ApplicationContext context = new ClassPathXmlApplicationContext("springbeans.xml");
//从上下文中获取到IOC管理的Bean对象
HelloJava helloJava = (HelloJava) context.getBean("helloJava");
helloJava.test();
}

Spring Framework 6.0 于2022年发布,它是Spring一个重大的更新,它直接舍弃了以往的JDK不再兼容,而是直接要求选用JDK17及以上版本。
Spring6.0已迁移到 Jakarta EE 9+,由 API 的命名空间由 jakarta 取代了以前的 javax (如:javax.servlet-api 变成了如今的 jakarta.servlet-api。由 jakarta 取代 javax。)。
公告称,不要停留在 Java EE 8 上,建议跃升到 jakarta 命名空间,最好直接跳到 Jakarta EE 10 level。而即将发布的 Spring Boot 3.0.0 版本将包含相应的托管依赖项。
同时由于 JavaEE的迁移,其 Servlet 中间件也要进行升级,Spring Framework 6.0 支持最新 Web 容器,如 Tomcat 10 / Jetty 11,以及最新的持久性框架 Hibernate ORM 。其中一些基于Servlet的组件也被移除,如:Commons FileUpload 上传组件。同时FreeMarker、JSP也停止了支持,转而把精力放在了基于Restful的Web架构。
而在SpringMVC的Controller上也有一些变动,现在Spring MVC和Spring WebFlux将不再将类上单独有直接@RequestMapping的Spring Bean视为控制器。在6.0之后默认情况下必须有@Controller或@RestController注解才可以被视为控制器。