Spring是什么?
Spring框架致力于JavaEE应用各层的解决方案,Spring贯穿了表现层、业务层、持久层。然而,Spring并不是取代那些已有的框架,而是以高度的开放性与他们无缝整合。下图是Spring框架通过IOC和AOP事务管理进行的SSH整合,其中包括了Shiro安全框架,用于身份验证。
Spring的特点
- 轻量级:Spring是非侵入性的-基于Spring开发的应用中的对象可以不依赖于Spring的API,也就是不需要继承或者实现接口或者实现类。
- 依赖注入(DI--- dependencyinjection、IOC),如A需要调用B,则A依赖B,只需要在A中声明,Spring容器会将B的Bean注入A中。
- 面向切面编程(AOP--- aspect oriented programming)
- 容器:Spring是一个容器, 因为它包含并且管理应用对象的生命周期
- 框架:Spring实现了使用简单的组件配置组合成一个复杂的应用.在Spring中可以使用XML和Java注解组合这些对象
- 一站式:在IOC和AOP的基础上可以整合各种企业应用的开源框架和优秀的第三方类库(实际上Spring自身也提供了展现层的SpringMVC和持久层的Spring JDBC)
Spring模块图
Spring主要由org.springframework.core、org.springframework.beans、org.springframework.context、org.springframework.expression 包组成,当使用Spring框架时必须使用Spring Core Container ,包含了核心(Core),Bean组件(Beans),上下文(Context)和表达式语言(Expression Language)模块。
Spring的模块大概分为6个,分别是:
1、Core Container(Spring的核心)【重要】
2、AOP(面向切面变成)【重要】
3、Messaging(消息发送的支持)
4、Data Access/Integration(数据访问和集成)
5、Web(主要是SpringWeb内容,包括MVC)【重要】
6、Test(Spring测试支持,包含JUint等测试单元的支持)
7、Instrumentation(设备支持,比如Tomcat的支持)如果需要发布使用了Spring框架的 Java Web 项目,还需要将Spring框架包和commons-loggin-1.1.3.jar添加到Web应用的WEB-INF路径下。
Spring核心容器管理着一切Java对象和Java组件,Spring一切管理的对象均被称为bean
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<!-- Spring配置可以管理一切java对象和组件 -->
<bean id="string" class="java.lang.String"></bean>
<!-- 将User类交给Spring管理器进行管理 -->
<bean id="User" class="org.jcq.bean.User"></bean>
</beans>
Spring框架内对配置文件进行解析,Spring底层会执行如下形式的代码
//解析XML<bean>标签中的id属性的值
String idStr = "user";
//解析XML<bean>标签中的class属性的值
String classStr = "org.jcq.bean.User";
//通过反射获取Class类
Class clazz=Class.forName(classStr);
//用Class类获取对象
Object obj=clazz.newInstance();
//以key-value的方式将obj放到Spring容器中便于管理
container.put(idStr,obj);
Spring中被人使用最多的可能就是他的依赖注入了,比如SSH整合的时候,必然会使用Spring的依赖注入。依赖注入简写DI,全称:Dependency Injection。依赖注入也有另外一个名字叫做控制反转(IOC)。
![](https://i-blog.csdnimg.cn/blog_migrate/70fd9973e2b4a4429efa979812dda6aa.png)