框架:初识Spring
Spring篇
第一章、Spring简介
一、Spring的体系结构
1、介绍
Spring有20多个的模块,这些模块分布与核心容器(Core Container)、数据访问/集成(Data Access/Integration)层、Web层、AOP(面向切片的编程)模块、植入(Instrumentation)模块、消息(Messaging)传输和测验(Test)模块。

图1.1 Spring的体系结构
2、核心容器
Spring的核心框架是其他模块建立的基础,由Spring-core、Spring-beans、Spring-context、Spring-context-support和Spring-expression(Spring表达式语言)等模块组成。
- Spring-core:提供了框架的基本组成部分,包括控制反转和注册依赖功能。
- Spring-beans:提供BeanFactory,是工厂模式的一个经典实现,Spring将管理对象称为Bean。
- Spring-context:提供一个框架式的对象访问方式,是访问定义和配置的任何对象的媒介。ApplicationContext接口是Context模块的焦点。
- Spring-context-support:支持整合第三方库到Spring的应用程序,特别是用于高速缓存和任务调度的支持
- Spring-expression:提供了强大的表达式语言去支持运行时查询和操作对象图。这是对JSP 2.1规范中规定的统一表达式语言(Unified EL)的扩展。该语言支持设置和获取属性值、属性分配、方法调用、访问数组、集合和索引器的内容、逻辑和算术运算、变量命名以及从Spring的1oC容器中以名称检索对象。它还支持列表投影、选择以及常见的列表聚合。
3、 AOP和Instrumentation
- Spring-aop模块:提供了一个符合AOP要求的面向切面的编程实现,允许定义方法拦截器和切入点,将代码按照功能进行分离,以便干净地解耦。
- Spring-aspects模块:提供了与AspectJ的集成功能, AspectJ是一个功能强大且成熟的AOP框架
- Spring-instrument模块:提供了类植入(Instrumentation)支持和类加载器的实现可以在特定的应用服务器中使用。
4、消息
Spring 4.0以后新增了消息(Spring-messaging)模块,该模块提供了对消息传递体系结构和协议的支持
5、数据访问/集成
数据访问/集成层由JDBC, ORM, OXM,JMS和事务模块组成。
- Spring-jdbc模块:提供了一个JDBC的抽象层,消除了烦琐的JDBC编码和数据库厂商特有的错误代码解析。
- Spring-orm模块:为流行的对象关系映射(Object-Relational Mapping) API提供集成层,包括JPA和Hibernate.使用Spring-orm模块可以将这些O/R映射框架与Spring提供的所有其他功能结合使用,例如声明式事务管理功能
- Spring-oxm模块:提供了一个支持对象/XML映射的抽象层实现,例如JAXB、Castor、JiBX和XStream.
- Spring-jms模块(Java Messaging Service):指Java消息传递服务,包含用于生产和使用消息的功能。自Spring 4.1以后,提供了与Spring-messaging模块的集成。
- Spring-tx模块(事务模块):支持用于实现特殊接口和所有POJO (普通Java对象)类的编程和声明式事务管理,
6、Web
- Web层由Spring-web, Spring-webmvc、 Spring-websocket和Portlet模块组成,
- Spring-web模块:提供了基本的web开发集成功能,例如多文件上传功能、使用Servlet监听器初始化一个loC容器以及Web应用上下文。
- Spring-webmvc模块:也称为Web-Servlet模块,包含用于Web应用程序的Spring MVC和REST Web Services实现。Spring MVC框架提供了领域模型代码和Web表单之间的清晰分离,并与Spring Framework的所有其他功能集成,。
- Spring-websocket模块: Spring 4.0以后新增的模块,它提供了WebSocket和SockJS的实现
- Portlet模块:类似于Servlet模块的功能,提供了Portlet环境下的MVC实现。
7、测试
Spring-test模块支持使用JUnit或TestNG对Spring组件进行单元测试和集成测试。
二、实践
第一步、在src的下面建立两个包,这两个包分别是dao和test

第二步、在dao包中,建立接口文件TestDao
package dao;
public interface TestDao {
public void sayHello();
}
第三步、在dao包中,建立接口实现类TestDaoImpl
package dao; /**
* 接口实现类
* lin
* 2018/11/22
*/
public class TestDaoImpl implements TestDao {
@Override
public void sayHello() {
System.out.println("Hello,Spring");
}
}
第四步、右键src,创建配置文件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">
<!--将指定类TextDaoImpl配置给Spring,让Spring创建其实例-->
<bean id="test" class="dao.TestDaoImpl"/>
</beans>
第五步、创建测试类
在text的包中,创建text文件。
package test; import dao.TestDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test {
public static void main(String[] args) {
//初始化Spring容器ApplicationContest,加载配置文件
ApplicationContext appCon=new ClassPathXmlApplicationContext("applicationContext.xml");
//通过容器获取test实例
TestDao testDao=(TestDao)appCon.getBean("test");//test为配置文件中的id
testDao.sayHello();
}
}
三、总结
实现Spring的基础步骤
- 导入相关的JAR包
- 创建接口
- 创建接口的实现类
- 创建配置文件-------关键代码:<bean id="自定义配置文件的id" class="接口实现类【包名.接口实现类】"/>
- 创建测试类
关键代码
//初始化Spring容器ApplicationContest,加载配置文件
ApplicationContext appCon=new ClassPathXmlApplicationContext("配置文件【加文件的扩展名】");
//通过容器获取test实例
接口名 testDao=(接口名)appCon.getBean("配置文件的自定义id");
//接口的方法
testDao.sayHello();
四、说明:
- 图1.1 Spring的体系结构在https://blog.csdn.net/cd18333612683/article/details/78312206获取,如有侵权请联系。
框架:初识Spring的更多相关文章
- 初识Spring Boot框架(二)之DIY一个Spring Boot的自动配置
在上篇博客初识Spring Boot框架中我们初步见识了SpringBoot的方便之处,很多小伙伴可能也会好奇这个Spring Boot是怎么实现自动配置的,那么今天我就带小伙伴我们自己来实现一个简单 ...
- 初识 Spring 框架
初识 Spring 框架可以帮助我们构建规范的.优秀的应用程序,简化烦琐的编码过程. Spring 是一个非常著名的轻量级的企业级开源框架,Spring 的目标是使 Java EE 更易用并促进良好的 ...
- 【框架】Spring和dubbox
分布式服务框架 dubbo/dubbox 入门示例 https://www.cnblogs.com/yjmyzz/p/dubbox-demo.html 初识Spring Boot框架 https:// ...
- 深入理解Spring(一):初识Spring
深入理解Spring(一):初识Spring 一. Spring介绍 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnso ...
- SSM框架-----------SpringMVC+Spring+Mybatis框架整合详细教程
1.基本概念 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One ...
- Eclipse/JavaWeb (三)三大框架之Spring框架 持续更新中...
(一)发展历史 现在我们有三个层了,可是每层之间的调用是怎样的呢?比如显示层的struts需要调用一个业务类,就需要new一个业务类出来,然后使用:业务层需要调用持久层的类,也需要new一个持久层类出 ...
- 深入学习微框架:Spring Boot(转)
转:http://www.infoq.com/cn/articles/microframeworks1-spring-boot/ 相关参考: https://spring.io/guides/gs/s ...
- atititt.java定时任务框架选型Spring Quartz 注解总结
atititt.java定时任务框架选型Spring Quartz 总结 1. .Spring Quartz (ati recomm) 1 2. Spring Quartz具体配置 2 2.1. 增 ...
- java框架篇---spring AOP 实现原理
什么是AOP AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP引入 ...
随机推荐
- Dropout的理解
https://zhuanlan.zhihu.com/p/23178423 这篇知乎文章讲的比较好,在神经网络权重取平均值和减少神经元之间复杂的共适应关系两个方面分析了为什么dropout可以解决过拟 ...
- Card Game Again CodeForces - 818E (双指针)
大意: 给定序列, 求多少个区间积被k整除. 整除信息满足单调性, 显然双指针. 具体实现只需要考虑k的素数向量, 对每一维维护个指针即可. 这题看了下cf其他人的做法, 发现可以直接暴力, 若当前的 ...
- 『TensorFlow』第七弹_保存&载入会话_霸王回马
首更: 由于TensorFlow的奇怪形式,所以载入保存的是sess,把会话中当前激活的变量保存下来,所以必须保证(其他网络也要求这个)保存网络和载入网络的结构一致,且变量名称必须一致,这是caffe ...
- 轻量级RPC
①自定义一个协议接口继承VersionedProtocol ②自定义协议类实现上面的接口,完善功能需求 ③服务端 ④客户端 二:模拟一个namenode
- hashCode会出现负数吗,答案是肯定的
先来普及一下基本数据类型的长度: unsigned int 0-4294967295 int -2147483648-2147483647 unsigned long 0-429496 ...
- 常用加密算法简单整理以及spring securiy使用bcrypt加密
一.哈希加密 1.md5加密 Message Digest Algorithm MD5(中文名为消息摘要算法第五版) https://baike.baidu.com/item/MD5/212708?f ...
- Lucene.Net 学习(搜索部分)(低要求,写给自己看)
1. 搜索 排序:lucene 提供了Sort类对结果进行排序 提供了Filter类对查询条件进行限制 你或许会不自觉地拿它跟SQL语句进行比较:“lucene能执行and.or.order by.w ...
- Python3+selenium+BaiduAI识别并下载花瓣网高颜值妹子图片
一.说明 1.1 背景说明 上周在“Python3使用百度人脸识别接口识别高颜值妹子图片”中自己说到在成功判断颜值后,下截图片并不是什么难点. 直观感觉上确实如此,你判断的这个url适不适合下载,适合 ...
- xmanager运行报错:bash: /usr/bin/xterm: No such file or directory
1.原因 xterm没有安装,解决办法是下载然后安装即可. 如果机器可以用yum,则直接使用yum安装xterm即可: yum install -y xterm 如果没有网络,则在某台操作系统大版本相 ...
- 强制ubuntu登陆用户退出
#skill -KILL -u user1 杀死并注销user1. #skill -CONT -u user1 恢复user1. 在Windows 2003默认情况下,三个以上就远程不了,必须强制登录 ...