什么是Spring?
Java目前最流行的开发框架组合简称SSM:Spring,SpringMVC,MyBatis。有关Spring的“非人类语言”解释,请自行百度。
为什么说是“非人类语言”呢?
因为在我初学Spring的时候,网上查了很多资料,也翻看了一些书籍,对Spring的解释基本上都是用专业术语和抽象语言进行解释。如果你没学过Spring,看再多遍解释你还是不明白,所以这些解释都是非常不友好的。
今天我就现学现卖,说一下我对Spring框架的理解。
Spring:核心价值是IOC和AOP
-
IOC(Inversion of Control)控制反转。是通过Java反射原理去创建对象。实现了创建对象时的解耦合,提高代码的灵活性。Spring可以被理解为一个用于创建和管理对象的工厂,负责创建、管理所有JAVA对象。
上面这些话翻译成人类语言就是说:
之前我们用Java创建对象的时候都是用这种形式:new AClass();
这种方式的问题是类名是写死在代码里面的,这种代码的耦合性太强。
而在Spring里面,创建对象的时候是这样写的:xxx.getBean("AClass");
类名是通过字符串传入的,这样耦合性大大降低。
这一过程的实现,是由Spring基于Java的反射技术实现的,所以把Spring成为工厂,由这个工厂负责生产对象。 -
AOP(Aspect Oriented Programming)面向切面编程。底层基于动态代理机制实现。简单的来说就是如果系统需要增加某额外功能的时候,在不改变原有代码的情况下,可以通过AOP机制将新的功能织入到程序的切入点(切入点可以精确到方法)上。这是非常好的一种解耦合的机制。作用类似于JAVA拦截器和过滤器。
我能想到的典型应用场景有两个:- 客户之前委托第三方开发了某JAVA系统,现在委托给你做新功能添加。最稳妥的方式是以AOP的形式将新功能织入到现有系统中。这样不会影响之前的代码结构,后期也便于单独维护自己的代码。
- 假如我们想统计下当前所有Service层函数的执行时间,以便优化代码。不可能给每个函数单独增加统计时间的代码。最好的方法是通过AOP,将统计代码织入到函数切入点中。
如果看到这里还不明白,就不要再纠结概念问题了,直接学习技术,学完回过头来再看,就觉得上面的内容很好理解了。
Spring开发环境搭建
Spring开发环境搭建基于Maven。过程非常简单,只需要两步即可完成:
- 添加Spring依赖
在Maven的pom.xml中添加如下依赖:<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.2.RELEASE</version> </dependency>
- 创建Spring配置文件applicationContext.xml
在resources文件夹下新建applicationContext.xml文件,并将以下内容复制进去:<?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"> </beans>
applicationContext.xml在Eclipse里面只能自己创建空xml,然后撰写。在Intellij IDEA编辑器里面,可以直接从模板创建。或许这就是为什么越来越多的人转向Intellij IDEA的原因。
[…] 有关Spring开发环境的搭建,请参考:http://www.leonwish.com/archives/79 […]
[…] 有关Spring开发环境的搭建,请参考:http://www.leonwish.com/archives/79 […]