Spring之魔丸降世
前言
好吧,这个标题挺扯的,反正大概的意思就是想聊聊spring,这篇文章不会涉及IOC和AOP,讲讲我的spring学习过程呢,先是狂神后是尚硅谷,然后杂七杂八面试题,狂神的视频呢就是能快速上手,尚硅谷的呢细嚼慢咽,娓娓道来,进一步了解。
什么是Spring
好吧,实话实说这个标题也是一个面试题,先来看看一些答案吧,然后自己总结
总结:
从答案中我们发现,必须说出spring有哪些模块,还有说一点这个的好处,
我的答案是,spring是一个开发框架,其中呢有七大模块分别是测试层,核心模块,aop,工具,消息,数据访问/集成,web。这七大模块呢又被分为20多个小模块,其中最重要的就是IOC和AOP,
spring方便解耦,简化开发,AOP编程支持,方便程序测试,方便和其他框架整合,方便进行事务操作,降低java开发的复杂性。
可以根据如下图来记忆
七大模块讲解
我们按照图片从上到下从左到右的顺序来讲解
数据访问集成:
这里分为了五个小模块
- JDBC (Java Database Connectivity) java数据库连接
- ORM (Object Relational Mapping) 对象关系映射
- OXM (Object XML Mapping) 对象XML映射
- JMS (Java Message Service) java消息服务
- Transactions 事务
ORM和事务比较重要,所以重点关注,你学习过程中听到的次数会比较多,我这里说听到,因为很多视频里面都有,你去学习的时候,就会听到,听到是普遍现象,学到是坚持不懈的现象。
Web模块:
这个模块有四个小模块,这个模块主要是做网站开发用的多,请记住spring的诞生,不是说就只能拿来在web开发方面使用,他的用途很广。做网站开发只是他使用的某一个方向而已。
- Web 模块 他提供了编解码,过滤器,序列化,国际化,跨域,转换器,客户端和服务端等等,
- WebMVC模块 我们使用的springmvc(这玩意是在基于spring开发的框架,迎合三层架构时代)
WebSocket 模块 用来支持这个 全双工通信(这个词学过计算机网络的熟悉,这玩意就是java网络编程的知识点,感兴趣可以去了解)
WebFlux模块 就是这个响应式Web编程模块
红字部分的是重要知识点,在对应着javaweb的知识点,是web开发老生常谈的知识点,任何语言的web开发都离不开,拦截器这个梗。只是各种语言实现的方式不一样而已。
切面模块(AOP)
就AOP
和 Aspects这两个模块
Aop
: Aspect Oriented Programming , 面向切面编程 ,是对OOP
的补充
Aspects
: 切面(只是一个过程)
Spring AOP
是一个基于代理的 Aop 框架 ,日常使用比较多的
Spring Aspects
模块里面则定义了五种类型的切面
可能大家对这里不理解,这个正常,就当混个眼熟,这个得具体使用和讲解才能知道
IOC核心模块
来到 Spring
最核心的部分,这里有我们熟悉的 控制反转 (Inversion of Control, IOC ) 和依赖注入( Dependency Injection, DI),他有四个核心模块
- Beans
- Core
- Context
- Expression
BeanFactory
在 Beans
模块中,IOC
容器的根接口,是IOC思想的实现方式之一
StopWatch
在 Core
模块中,它是 Spring
中的一个计时器,在启动 Spring
项目时经常看到
ApplicationContext
在 Context
模块中 ,核心接口
ParserContext
就在 Expression
模块中,里面定了这个 EL表达式 的默认前缀 #{
, 后缀 }
BeanFactory: IOC容器的基本实现,是Spring内部使用的接口,不提供给开发人员使用
ApplicationContext: BeanFacatory 接口的子接口,提供了更多强大的功能,一般由开发人员使用
Test模块
这个模块就是拿来测试写的代码,主要应用在三层架构中,测试每一层的代码有没有问题。
入门案例
下载Spring框架
具体步骤:Spring下载(超详细)_挣脱那枷锁的博客-CSDN博客_spring下载
直接网址:JFrog
使用idea创建一个项目
导入jar包
可以观察发现都是jar包,文档,源代码
做简单的案例只需要核心模块
部门类
/*** 部门类*/
public class Dep {private String name;private List<String> cats;private Set<String> pats; //宠物private Map<String,String> infos; //信息private Properties mysqlInfos; //mysql数据库链接信息private String[] numbers; //家庭成员public void setCats(List<String> cats) {this.cats = cats;}public void setPats(Set<String> pats) {this.pats = pats;}public void setInfos(Map<String, String> infos) {this.infos = infos;}public void setMysqlInfos(Properties mysqlInfos) {this.mysqlInfos = mysqlInfos;}public void setNumbers(String[] numbers) {this.numbers = numbers;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Dep{" +"name='" + name + '\'' +", cats=" + cats +", pats=" + pats +", infos=" + infos +", mysqlInfos=" + mysqlInfos +", numbers=" + Arrays.toString(numbers) +'}';}
}
员工类
/*** 员工类*/
public class Emp {private String name;//属于哪个部门private Dep dep;public void setName(String name) {this.name = name;}public void setDep(Dep dep) {this.dep = dep;}@Overridepublic String toString() {return "Emp{" +"name='" + name + '\'' +", dep=" + dep +'}';}
}
bean2.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"><!-- 注入内部bean演示--><bean id="emp" class="pojo.Emp"><property name="dep"><bean class="pojo.Dep"><property name="name" value="保安部"></property></bean></property></bean>
</beans>
测试类
public class SpringTest {@Testpublic void test() throws BeansException {//得到IOC容器ApplicationContext context = new ClassPathXmlApplicationContext("bean2.xml");//通过id拿到bean对象Emp emp = (Emp) context.getBean("emp");System.out.println(emp);}}
这个案例使用就是它的核心,创建一个对象。不是用new的方式而是用xml配置。更多精彩内容请收看后续文章
Spring之魔丸降世相关推荐
- 电影「哪吒之魔童降世」免 费 高 清 完 整 版 在 线 观 看
近几年来,国产动漫有了长足的进步,除了动画这边出了很多优秀作品,在动画大电影上也有很大的进步.近日,一部名为<哪吒之魔童降世>的国产动画电影上映了,这部作品此前在宣传的时候被观众们喷了个狗 ...
- 哪吒之魔童降世视听语言影评_国漫神作 再造辉煌——《哪吒之魔童降世》影评...
<哪吒之魔童降世>由饺子执导.编剧的动画电影,改编自中国神话故事,讲述了哪吒虽"生而为魔"却"逆天而行斗到底"的成长经历的故事. "英杰谁 ...
- 观《哪吒之魔童降世》有感
1简介 哪吒这个电影从7月26日上映之后,距离今天8月4日不足十天,今天的票房已经达到20.07亿,毫无疑问,这部动画电影已经打破了<西游记之大胜归来>,成为了新的动画巨作,而且电影前期 ...
- 哪吒之魔童降世视听语言影评_《哪吒之魔童降世》影评4篇
<哪吒之魔童降世>影评 4 篇 题材的选择真的很棒 ! 在国产动漫还没有成长到一定的 程度的时候,选择中国风的东西是可以帮助电影提升一些话 题度和关注度的 !( 我也不知道对不对 em 感 ...
- 哪吒之魔童降世视听语言影评_关于《哪吒之魔童降世》艺术形象的研究
关于<哪吒之魔童降世>艺术形象的研究 沈亮 四川省 四川大学 摘要:随着动漫,动画技术的不断发展,动画片越来越受到人们的推崇,本文通过试听艺术,视觉艺术等多方面的分析来阐述<哪吒之魔 ...
- 2019年暑期档最大的爆款《哪吒之魔童降世》
不知不觉已经立秋啦,回首整个暑期档,最大的爆款非<哪吒之魔童降世>莫属啦! 影片上映到现在总票房已经突破30亿,接连超越<西游记之大圣归来>.<疯狂动物城>的记录, ...
- 《魔童降世》影评——从封神演义谈到宿命
今日看完魔童降世中的哪吒,不得不称赞这次改编很精妙,也不得不说编剧的三观很正. 哪吒在我们大多数人的心中可能是纯真无害的小孩子,生来便拥有法宝乾坤圈和混天绫,得遇名师太乙真人,修得神通三头六臂,坚持正 ...
- python项目开发案例集锦 豆瓣-Python第三个项目:爬取豆瓣《哪吒之魔童降世》 短评...
前面爬完网站信息图片之后,今天的又有了个小目标,最近的电影哪吒很火,去豆瓣上看了一下 影评,决定了今天主要是实现Python第三个项目:爬取豆瓣<哪吒之魔童降世> 短评,然后下载在exce ...
- 哪吒之魔童降世 - 逆天改命,若命运不公,就和它斗到底!
哪吒之魔童降世 昨晚去看了电影<哪吒之魔童降世>,简称 <哪吒>,讲述了哪吒虽"生而为魔"却"逆天而行斗到底"的成长经历的故事. 看完电 ...
最新文章
- 大专生自学Java到找到工作的过程
- 【编程之美】3.5 最短摘要的生成
- SQL 重置自增列的值 批量处理
- java常用类的方法,java常用类的使用方法
- Vue跨路由触发事件,Vue监听sessionStorage
- 今天听说了一个压缩解压整型的方式-group-varint
- 426rmb to php,PHP 转换数字为大写人民币之二
- php部分---单文件上传的封装类
- Kubernetes之Pod生命周期详解
- sublime text3安装、注册及常用插件
- 案例:仿小米logo过渡渐变效果
- 计算机考研复试面试常问问题 数据结构篇(下)
- papi酱微博数据可视化(截至2020年12月9日)
- 马氏距离 结合 卡方分布 异常点检测
- AI 重聚知名已故歌手,发布四首原创歌曲
- DNS_PROBE_FINISHED_NXDOMAIN完美解决办法
- 生活妙语--智慧语言
- 最亮的win7主题桌面
- 解决iphone的短信中心号码设置错误的方案
- 记canvas画笔笔迹的多次优化过程
热门文章
- 教你如何使用Google进行搜索
- 如何使用pdfbox實現打印功能--foxconn-it-zyzx-xiaohuibing-2
- 视频] 川版<唐伯虎点秋香>片段,
- 15天精读掌握《高德纳_具体数学》 第11天 2019.6.7
- 工厂模式——简单工厂模式、工厂方法模式和抽象工厂模式
- C++中 pair 和 make_pair 的用法
- Vue-axios使用QS(QueryString)插件,Vue-axios无法发送参数给后端(包含但不限于php)。
- javah 类com.xxxx.xxxx 找不到问题解决方法
- 浏览器遇到找不到“www.xxxx.com”等的服务器的IP地址怎么解决
- cf最新服务器录像,cf踏空跳录像文件