1. Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
  1. Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
  1. Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。

什么是IOC的功能?

概念

IoC – Inverse of Control,控制反转,将对象的创建权反转给Spring!!

使用IOC可以解决的程序耦合性高的问题!!

控制反转

假设我需要做一个功能,在这个功能当中我需要调用servic层,然后再调用dao层,去取数据。在传统的javaEE开发中我就直接去new一个service 然后再new一个dao。但是在spring框架中,我们吧new service和new dao的权利交个spring框架,假设我需要使用我就直接去spring框架中寻找。等于说我的资源创建的权利交给了spring框架,这就叫做控制反转。

解耦

刚刚我们说资源创建交给了sring,我们需要什么就找spring。这过程就像是工厂模式。但是在spring框架中它需要创建哪些对象,它需要一个配置文件。这个配置文件告诉spring,需要创建哪些资源。

例如:假设我需要去数据库查询数据显示页面

程序启动,spring框架去找配置文件创建资源,把资源放置再一个容器中,开始运行,前端请求数据,在spring中找controller层,再找service层,再找dao层要数据,最后数据原路返回controller,再显示到页面上。其中service被spring注入到controlller层,dao层被spring注入到service层。这个过程分工明确。每一层各司其职。传统的一个开发,在servlet中直接new然后去查数据,然后数据返回到界面上。万一操作一多所有的判断,查询不同的表,这个servlet的代码变得十分的臃肿。不说开发慢,你开发完了看代码也费劲。 所以说控制反转可以用来解耦


什么是面向切面(AOP)?

概念

  • 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程

  • AOP是一种编程范式,隶属于软工范畴,指导开发者如何组织程序结构

  • AOP最早由AOP联盟的组织提出的,制定了一套规范.Spring将AOP思想引入到框架中,必须遵守AOP联盟的规范

  • 通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术

  • AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型

  • 利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率

其实AOP可以在不修改源代码的前提下,对程序进行增强!!

Spring框架的AOP的底层实现

1. Spring框架的AOP技术底层也是采用的代理技术,代理的方式提供了两种

1. 基于JDK的动态代理

必须是面向接口的,只有实现了具体接口的类才能生成代理对象 

2. 基于CGLIB动态代理


对于没有实现了接口的类,也可以产生代理,产生这个类的子类的方式 

2. Spring的传统AOP中根据类是否实现接口,来采用不同的代理方式

  1. 如果实现类接口,使用JDK动态代理完成AOP
  1. 如果没有实现接口,采用CGLIB动态代理完成AOP

JDK的动态代理

注意:需要实现类接口

例子:假设我有两个工作,工作1,工作2.


//写一个接口public interface Working {void wokingOne();void WorkingTwo();} 

//接口实现类

public class WorkingImpl implements Working {

@Overridepublic void wokingOne() {System.out.println("做任务1");}@Overridepublic void WorkingTwo() {System.out.println("做任务2");}

}

> 好的,现在我要先做任务1,然后再做任务2我们的写法为:

public static void main(String[] args) {

    Working working = new WorkingImpl();working.wokingOne();//做任务1working.WorkingTwo();//做任务2}
> 好的精彩的地方来了,我再做任务2之前我要先休息10分钟,但是不能修改源代码。怎么办呢?这时候就用到我们的JDK动态代理了。代码如下:> 先写一个代理的工具类。再做任务2前我们休息十分钟

public class MyProxyUtils {

public static Working getProxy(final Working working) {// 使用Proxy类生成代理对象Working proxy = (Working) Proxy.newProxyInstance(working.getClass().getClassLoader(),working.getClass().getInterfaces(), new InvocationHandler() {// 代理对象方法一直线,invoke方法就会执行一次public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {//再做工作2之前我先休息10分钟if ("WorkingTwo".equals(method.getName())) {System.out.println("休息10分钟");}//工作继续进行下去return method.invoke(working, args);}});// 返回代理对象return proxy;}

}

public static void main(String[] args) {Working working = new WorkingImpl();Working proxy = MyProxyUtils.getProxy(working);proxy.wokingOne();proxy.WorkingTwo();} ```运行的结果可想而知:```# 最后总结我的面试经验2021年的金三银四一眨眼就到了,对于很多人来说是跳槽的好机会,大厂面试远没有我们想的那么困难,摆好心态,做好准备,你也可以的。另外,面试中遇到不会的问题不妨尝试讲讲自己的思路,因为有些问题不是考察我们的编程能力,而是逻辑思维表达能力;最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。**资料领取方式:[点击这里免费获取](https://gitee.com/vip204888/java-p7)**![](https://img-blog.csdnimg.cn/img_convert/1c9155b8bab06775291f1e74c625861a.png)BAT面试经验**实战系列:Spring全家桶+Redis等**![](https://img-blog.csdnimg.cn/img_convert/406aa415224f8728fcd0875ca7dcbed7.png)**其他相关的电子书:源码+调优**![](https://img-blog.csdnimg.cn/img_convert/8872c4d0d4c9b5018c76e2535d75a1f9.png)**面试真题:**![](https://img-blog.csdnimg.cn/img_convert/6ce0b474b513659072485a386ccc2ebe.png)![](https://img-blog.csdnimg.cn/img_convert/0dc20a9f0e43d224e05bbc539508798d.png)-p7)**[外链图片转存中...(img-d9UMef09-1628591109464)]BAT面试经验**实战系列:Spring全家桶+Redis等**[外链图片转存中...(img-FEyLnxOY-1628591109466)]**其他相关的电子书:源码+调优**[外链图片转存中...(img-i7bJlOmG-1628591109468)]**面试真题:**[外链图片转存中...(img-7e6UFFIg-1628591109470)][外链图片转存中...(img-8zAHlb4K-1628591109472)]

Spring框架入门基础,不可多得的干货相关推荐

  1. Spring Security入门基础

    Spring Security入门基础 文章目录 Spring Security入门基础 一,Spring Security的使用 1.1 基本术语 1.2 基本使用 1.2.1 引入依赖 1.2.2 ...

  2. Java Spring框架入门详解教程【多测师_何sir】

    Spring框架入门详解教程 spring概述 spring结构 spring IOC spring DI spring概述 Spring是一个非常活跃的开源框架, 它是一个基于IOC和AOP来构架多 ...

  3. Spring框架入门:(非原著,转载)

    1.1.      耦合性和控制反转: 对象之间的耦合性就是对象之间的依赖性.对象之间的耦合越高,维护成本越高.因此,对象的设计应使类和构件之间的耦合最小. 例: public interface I ...

  4. Spring框架入门

    目录 Spring框架概述 1.Spring框架组成 2.使用spring有什么好处 3.为什么使用spring框架 4.Spring快速入门 4.1Spring IoC底层实现原理 4.2下载Spr ...

  5. 【视频分享】Java Spring 经典入门基础教程详解

    看到有小伙伴留言说想要Spring相关的,今天就分享一波关于 Spring 的入门视频,有需要的可以领取. Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架 ...

  6. Spring框架IOC基础及XML的配置 第二章

    1 Spring概述 1.1 关于框架 框架的概念 框架:特指软件框架,它是我们在实际开发中解决项目需求的技术集合.运用框架可以大大简化代码的编写,缩短开发周期.同时,对后续负责项目维护的人员降低技术 ...

  7. 详解spring框架入门到精通

    spring概述 spring框架的优点 spring框架的组成 spring核心IOC IOC概述 IOC入门案例 创建maven jar工程 引入spring的依赖 引入spring的核心配置文件 ...

  8. 1.Spring框架入门

    **Spring框架的IOC核心功能快速入门(必须掌握开发的步骤)**0. 什么是IOC的功能?* IOC -- Inverse of Control,控制反转,将对象的创建权反转给Spring!!* ...

  9. Spring框架入门笔记

    Spring框架 1.Spring是什么? Spring是分层的Java SE,/EE应用full-stack轻量级开源框架,以IoC(Inverse Of Control:反转控制)和AOP(Asp ...

最新文章

  1. OAuth认证协议原理分析及使用方法
  2. C# TripleDES NoPadding 时对待加密内容进行补字节(8个字节为一个Block)
  3. 论文不必参考任何文献?看到作者,网友大呼失敬了
  4. 【BZOJ-1858】序列操作 线段树
  5. 解决JavaServer Faces 2.2 requires Dynamic Web Module 2.5 or newer问题
  6. oracle SELECT子句中避免使用 ‘ * ‘
  7. python3高性能网络编程_Python3 网络编程
  8. Linux学习笔记-文件权限与路径
  9. CentOS 设置服务开机启动的方法
  10. 《走遍中国》珍藏版(三)
  11. 华为薪资等级结构表_华为21级程序员月薪曝光:月薪27w,什么概念!程序员中的战斗机...
  12. GIT和GitHub的使用总结
  13. springboot细节挖掘(知识积累)
  14. SPSS数据分析之描述性统计、区间估计与假设检验【操作详解】
  15. 运营商缺的是应用还是想法--广州晨皓
  16. 第一个Eureka Service
  17. 【Spring-tx】关于spring事务的思考
  18. j2me联网_与J2ME联网
  19. Linux ALSA声卡驱动之二:声卡的创建
  20. 网页制作中PS图像处理的应用

热门文章

  1. insightface mxnet训练 out of Memory
  2. pyinstaller 'utf-8' codec can't decode byte 0xce in position 123: invalid continuation byte
  3. cannot import name 'ImageRecordInt8Iter'
  4. Invalid character escape '\o'.
  5. vs2015改程序名字
  6. String、StringBuffer、与StringBuilder的区别
  7. 摄像头标定入门资料整理
  8. 南昌航空航天c语言试卷,2016年南昌航空大学软件学院程序设计复试笔试仿真模拟题...
  9. 实施文档_Word 2010文档处理案例教程
  10. 蓝牙杂散超标_杂散发射