概述:Spring是一个轻量级、开源的JavaEE框架。
目的:解决企业应用开发的复杂性
核心部分:IOC(控制反转)和AOP(面向切面编程)。
既然说到了核心部分,那么就在说说Spring的所有组成部分:
组成部分如下图:
我们可以将Spring的组成部分分为八类:
Data Access/Integration:数据访问或者叫数据整合,主要负责包括对JDBC的封装,对象关系映射,封装JAVA对象与XML之间转换的功能,JAVA消息服务等。
Web: 网络模块的整合,主要负责包括网络通信,Web相关的开发,反应式Web应用(WebFlux),以及大名鼎鼎的Spring MVC也在这个模块中。
AOP:面向切面编程,提供AOP(面向切面编程)的实现
Aspects:提供的对AspectJ框架的整合
Instrument:整合模块,对服务器的代理接口
Messaging:为集成messaging api和消息协议提供支持
Core Container:核心工具包,Spring的重要组成部分,包括对类的处理、应用上下文的处理、以及Spring表达式的处理
Test:对JUNIT等测试框架的简单封装
通过Spring整合的这么功能我们可以总结出Spring的如下特点:
Spring的特点:
方便解耦,简化开发
AOP编程的支持
方便程序的测试,集成Junit
方便整合各种其他优秀框架
声明式事务的支持
降低JavaEE API的使用难度
Java源码是经典的学习案例
通过一个入门案例,让我们对Spring 有一个更好的了解吧
1)环境搭建
创建Mavn项目,引入Spring5的坐标,当前使用的spring5版本:5.2.8
如何引用Spring5的相关jar包?
访问地址:https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Artifacts
从图上我们可以看到Spring框架有20多个模块分别在不同的jar包管理,那么我们如果想创建一个简单的spring项目应该引入哪些jar包呢?
需要引入4个核心基础jar包和一个依赖的日志包common-logging、Junit单元测试框架,一共6个包
spring-core
spring-aop
spring-context
spring-expression
common-logging
junit
4.0.0
org.learn.spring5
spring5-learn-1
1.0-SNAPSHOT
org.springframework
spring-core
5.2.8.RELEASE
org.springframework
spring-beans
5.2.8.RELEASE
org.springframework
spring-context
5.2.8.RELEASE
org.springframework
spring-expression
5.2.8.RELEASE
commons-logging
commons-logging
1.2
junit
junit
4.12
项目引入的jar包最终如下:
2)案例演示,编写代码
1. 创建一个User类
package org.learn.spring5;
/**
* User类
*/
public class User {
/**
* add方法
*/
public void add(){
System.out.println("add...........");
}
}
2.通过Spring的配置文件bean1.xml实例化一个对象
3.创建测试类
package org.learn.spring5;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestSpring5 {
@Test
public void test() {
//1.加载spring的配置文件
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
//2.获取配置创建的对象
//第一个参数是配置文件中配置的User对象的ID
User user = context.getBean("user",User.class);
System.out.println(user);
user.add();
}
}
程序的执行结果
org.learn.spring5.User@2c039ac6
add...........
综上所述我们完成了一个最简单的Spring项目,从代码上我们有没有对Spring些许认识呢?
思考一下,引入了Spring框架后,和我们之前开发的模式有什么区别呢?
通过代码结合上面讲述的Spring的特点,我们是不是可以发现Spring的引入后,可以方便的对对象进行解耦,传统的模式是我们自己手动是实例化创建对象,现在我们可以通过Spring的配置文件去实例化对象,然后在代码里直接调用该对象的方法就可以完成对象的方法执行。
现在是不是还是处于它不认识你,你也不太认识它的情况?没关系我们先了解一个项目是如何引入Spring框架,对Sring有一个简单的认知,实现和理解Spring给我们带来的方便操作后,我们继续往后学。