前言

好吧,这个标题挺扯的,反正大概的意思就是想聊聊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表达式 的默认前缀 #{ , 后缀 }

  1. BeanFactory: IOC容器的基本实现,是Spring内部使用的接口,不提供给开发人员使用

  2. ApplicationContext: BeanFacatory 接口的子接口,提供了更多强大的功能,一般由开发人员使用

Test模块

这个模块就是拿来测试写的代码,主要应用在三层架构中,测试每一层的代码有没有问题。

入门案例

  1. 下载Spring框架

    具体步骤:Spring下载(超详细)_挣脱那枷锁的博客-CSDN博客_spring下载

    直接网址:JFrog

  2. 使用idea创建一个项目

  3. 导入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. 电影「哪吒之魔童降世」免 费 高 清 完 整 版 在 线 观 看

    近几年来,国产动漫有了长足的进步,除了动画这边出了很多优秀作品,在动画大电影上也有很大的进步.近日,一部名为<哪吒之魔童降世>的国产动画电影上映了,这部作品此前在宣传的时候被观众们喷了个狗 ...

  2. 哪吒之魔童降世视听语言影评_国漫神作 再造辉煌——《哪吒之魔童降世》影评...

    <哪吒之魔童降世>由饺子执导.编剧的动画电影,改编自中国神话故事,讲述了哪吒虽"生而为魔"却"逆天而行斗到底"的成长经历的故事. "英杰谁 ...

  3. 观《哪吒之魔童降世》有感

    1简介  哪吒这个电影从7月26日上映之后,距离今天8月4日不足十天,今天的票房已经达到20.07亿,毫无疑问,这部动画电影已经打破了<西游记之大胜归来>,成为了新的动画巨作,而且电影前期 ...

  4. 哪吒之魔童降世视听语言影评_《哪吒之魔童降世》影评4篇

    <哪吒之魔童降世>影评 4 篇 题材的选择真的很棒 ! 在国产动漫还没有成长到一定的 程度的时候,选择中国风的东西是可以帮助电影提升一些话 题度和关注度的 !( 我也不知道对不对 em 感 ...

  5. 哪吒之魔童降世视听语言影评_关于《哪吒之魔童降世》艺术形象的研究

    关于<哪吒之魔童降世>艺术形象的研究 沈亮 四川省 四川大学 摘要:随着动漫,动画技术的不断发展,动画片越来越受到人们的推崇,本文通过试听艺术,视觉艺术等多方面的分析来阐述<哪吒之魔 ...

  6. 2019年暑期档最大的爆款《哪吒之魔童降世》

    不知不觉已经立秋啦,回首整个暑期档,最大的爆款非<哪吒之魔童降世>莫属啦! 影片上映到现在总票房已经突破30亿,接连超越<西游记之大圣归来>.<疯狂动物城>的记录, ...

  7. 《魔童降世》影评——从封神演义谈到宿命

    今日看完魔童降世中的哪吒,不得不称赞这次改编很精妙,也不得不说编剧的三观很正. 哪吒在我们大多数人的心中可能是纯真无害的小孩子,生来便拥有法宝乾坤圈和混天绫,得遇名师太乙真人,修得神通三头六臂,坚持正 ...

  8. python项目开发案例集锦 豆瓣-Python第三个项目:爬取豆瓣《哪吒之魔童降世》 短评...

    前面爬完网站信息图片之后,今天的又有了个小目标,最近的电影哪吒很火,去豆瓣上看了一下 影评,决定了今天主要是实现Python第三个项目:爬取豆瓣<哪吒之魔童降世> 短评,然后下载在exce ...

  9. 哪吒之魔童降世 - 逆天改命,若命运不公,就和它斗到底!

    哪吒之魔童降世 昨晚去看了电影<哪吒之魔童降世>,简称 <哪吒>,讲述了哪吒虽"生而为魔"却"逆天而行斗到底"的成长经历的故事. 看完电 ...

最新文章

  1. 大专生自学Java到找到工作的过程
  2. 【编程之美】3.5 最短摘要的生成
  3. SQL 重置自增列的值 批量处理
  4. java常用类的方法,java常用类的使用方法
  5. Vue跨路由触发事件,Vue监听sessionStorage
  6. 今天听说了一个压缩解压整型的方式-group-varint
  7. 426rmb to php,PHP 转换数字为大写人民币之二
  8. php部分---单文件上传的封装类
  9. Kubernetes之Pod生命周期详解
  10. sublime text3安装、注册及常用插件
  11. 案例:仿小米logo过渡渐变效果
  12. 计算机考研复试面试常问问题 数据结构篇(下)
  13. papi酱微博数据可视化(截至2020年12月9日)
  14. 马氏距离 结合 卡方分布 异常点检测
  15. AI 重聚知名已故歌手,发布四首原创歌曲
  16. DNS_PROBE_FINISHED_NXDOMAIN完美解决办法
  17. 生活妙语--智慧语言
  18. 最亮的win7主题桌面
  19. 解决iphone的短信中心号码设置错误的方案
  20. 记canvas画笔笔迹的多次优化过程

热门文章

  1. 教你如何使用Google进行搜索
  2. 如何使用pdfbox實現打印功能--foxconn-it-zyzx-xiaohuibing-2
  3. 视频] 川版<唐伯虎点秋香>片段,
  4. 15天精读掌握《高德纳_具体数学》 第11天 2019.6.7
  5. 工厂模式——简单工厂模式、工厂方法模式和抽象工厂模式
  6. C++中 pair 和 make_pair 的用法
  7. Vue-axios使用QS(QueryString)插件,Vue-axios无法发送参数给后端(包含但不限于php)。
  8. javah 类com.xxxx.xxxx 找不到问题解决方法
  9. 浏览器遇到找不到“www.xxxx.com”等的服务器的IP地址怎么解决
  10. cf最新服务器录像,cf踏空跳录像文件