爱美容
当前位置: 首页 美容百科

spring有什么东西(Spring是什么)

时间:2023-06-10 作者: 小编 阅读量: 1 栏目名: 美容百科

简单来说,Spring是一个轻量级的控制反转和面向切面的容器框架。从大小与开销两方面而言Spring都是轻量的。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。IOC还有另外一个名字:DI依赖注入。

Spring

Spring是什么?

  • 官方来说:Spring是一个开源的轻量级开发应用框架,其目的是用于简化企业级应用程序开发。
  • 翻译一下:Spring就是一个容器IOC框架,用来装Javabean(java对象),中间层框架(万能胶)可以起一个连接作用,比如说把springmvc和mybatis粘合在一起运用。简单来说,Spring是一个轻量级的控制反转(IOC) 和 面向切面(AOP) 的容器框架。

与EJB对比,依赖资源少,销毁的资源少。

为什么是轻量?

从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。

此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。

IOC

IOC是什么

  1. Inversion of Control 大致翻译成控制反转, 就是由容器控制程序之间的(依赖)关系而非传统实现中,由程序代码直接操控。
  2. 这也就是所谓“控制反转”的概念所在:(依赖)控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。
  3. IOC还有另外一个名字:DI依赖注入。

获得依赖对象的过程被反转了,获得依赖对象的过程由自身管理到IOC容器主动注入,这也就是依赖注入DI Dependency injection,所谓依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。

为什么要使用IOC?

借助于“第三方”实现具有依赖关系的对象之间的解耦。

AOP

AOP概念:

  1. 是一种编程思想,可以说是对面向对象编程的补充,通过分离应用的业务逻辑与系统级服务(例如日志和事务管理)进行开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责其它的系统级关注点,例如日志或事务支持。
  2. 指扩展功能不修改源代码,将功能代码从业务逻辑代码中分离出来。

我们可以把日志,事务,安全支持等服务理解为一个切面,以前这些服务都是写在逻辑代码中 (这样存在问题:业务逻辑不纯净,而且重复性劳动过多,可以剥离出来为一个增强,然后织入到业务逻辑中去。)

AOP特点:

采用横向抽取机制,取代了传统纵向继承体系重复性代码;

AOP术语:

切面:把增强应用到具体方法上面的过程称为切面。

切入点:在类里边可以有很多方法被增强,比如实际操作中,只是增强了个别方法,则定义实际被增强的某个方法为切入点。

通知/增强:增强的逻辑,称为增强,比如扩展日志功能,这个日志功能称为增强。

AOP的实现者

AspectJ

AspectJ是语言级的AOP实现,2001发布,扩展了Java语言,定义了AOP语法,能够在编译期通过提供增强代码的织入,所以它有一个专门的编译器用来生成遵守Java字节码规范的class文件

  • SpringAOP

SpringAOP使用纯Java实现,在运行期通过代理的方式向目标类织入增强代码。

  • SpringAOP的实现
  • 基于JDK的动态代理:

新建一个MyHandler 实现 InvocationHandler接口,重写invoke()方法,实现有参构造。

在测试类中,先加载配置文件,再获取目标对象,获取增强对象,获取处理器对象,处理器去做织入的功能,最后通过代理去执行。

  • 基于CGlib的动态代理:

CGlib采用非常底层的字节码技术,可以为一个类创建子类,并在子类中采用方法拦截技术拦截所有父类方法的调用,并织入横切逻辑

/** * CGLIB动态代理(基于类) * 实现步骤: * (一)、自定义一个类去实现一个MethodInterceptor接口,重写interceper方法,这个方法中做一个增强代码和业务代码的交织操作 * 如何创建一个类的子类代理对象? * 1、Enhancer enhancer = new Enhancer()创建一个enhancer对象,该对象可以创建子类代理对象 * 2、enhancer.setSuperclass(xxx.class) 设置父类类型; * 3、enhancer.setCallback(拦截器对象) 设置回调对象; * 4、enhancer.create(); 创建子类代理对象 * 5、通过子类代理对象调用方法时,会调用intercepter方法进行操作 */ public class TransactionInterceptor implements MethodInterceptor {//增强private TransactionManager transactionManager;public TransactionInterceptor(TransactionManager transactionManager) {super();this.transactionManager = transactionManager;}@Overridepublic Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {transactionManager.startTransaction();//调用父类的方法Object result = proxy.invokeSuper(obj, args);transactionManager.commitTransaction();return result;}}测试类:public class Client {public static void main(String[] args) {//增强TransactionManager transactionManager = new TransactionManager();//创建一个拦截器对象TransactionInterceptor interceptor = new TransactionInterceptor(transactionManager);//创建一个enhancer对象Enhancer enhancer = new Enhancer();//设置父类类型enhancer.setSuperclass(UserDao.class);//设置回调对象enhancer.setCallback(interceptor);//设置子类的代理对象UserDao userDaoProxy = (UserDao) enhancer.create();//调用方法userDaoProxy.add();System.out.println("-------------");userDaoProxy.del();}}

    推荐阅读
  • 特斯拉空气滤清器清洗(特斯拉小课堂之更换空调滤清器)

    更换空调滤清器:关闭温度控制系统。将前排乘客座椅移至最后端,并拆下前排乘客脚垫。倘若高压线缆已损坏,请立即停止此程序。触碰高压电会造成严重人身伤害或死亡。确保两个新滤清器上的箭头朝向车辆后侧,同时,将空调滤清器的底部插入HVAC模块,并向下放置入位。向内侧折叠锁片,以便安装空调滤清器盖板。锁止盖板底部锁片,然后固定T20螺丝,以便安装空调滤清器盖板。

  • iphonex手机铃声怎么设置 iPhonex铃声怎么设置

    iphonex手机铃声怎么设置,1、首先需要将iPhoneX使用数据线连接上PP助手电脑版,需要在电脑上完成连接。2、然后在iPhoneX上会弹出是否信任此电脑,选择信任即可。3、连接成功之后,依次工具箱铃声制作。

  • 世界历史动画5(和孩子一起认识世界5-最早先有鸡还是先有鸡蛋)

    2021年3月30日,孩子7岁半。因此世界上第一只鸡只能以胚胎形式存在于一个蛋中,在这只蛋中有着鸡的DNA结构,可以定义为鸡蛋。也有可能与人类活动改变了原鸡的某些特性有关。

  • 顶级翡翠价格(顶级翡翠价格怎么样)

    下面内容希望能帮助到你,我们来一起看看吧!高档、特级翡翠的特征是种好、绿正、水好、纯净度高。这个档次的翡翠几百年来价格只涨不跌,因为高档特级翡翠是世界上所有玉石中最美丽、最具有欣赏价值的珍品;另外,高档特级翡翠生成的地质条件苛刻,资源极其稀缺,属于不可再生资源。顶级翡翠价格取决于品质而定,而按照目前市场上的翡翠品质,大致分为中高低三个档次。

  • 知识改变命运学习成就未来梦想(知识改变命运学习改变人生)

    姬焕荣涉足创业培训,教育培训,家长课堂,成立了问上书院组织线下活动300余场,约谈企业家百余人。“人生路上因为遇见某人或某一本书,或许会改变你的人生”这句话在姬焕荣这里展现得淋漓尽致。面对复杂的社会,姬焕荣选择了一条能够帮助更多弱势群体的育人之路。

  • 每日俗语100首(每日一词跑调儿)

    点上方“蓝色字”,followus!K歌是朋友聚会的首选娱乐活动,在KTV里,你是麦霸,还是“跑调儿”歌王?“跑调儿”,也称“走调”,意思为演唱或演奏时发出的音调不准,英文翻译为“beoutoftune,strikeawrongnote”。Thepianoisoutoftune.她有些地方唱得明显跑调儿了。Shesangdistinctlyoutoftuneinplaces.Editor:Jade欢迎进入我们打卡小程序除了每日音频还有免费电影台词跟读课程哦!还不错的话,就请点亮下方的在看吧!

  • 怎么快速睡觉(快速睡觉的方法)

    下面更多详细答案一起来看看吧!怎么快速睡觉从300倒着数下去,每次递减3.这样复杂且无趣的数数方式可以分散注意力。睡前一小时洗个热水澡,水温不要低于38度,时间在20分钟之上。在睡觉几个小时前不要锻炼,最好是睡前4小时。锻炼会让大脑兴奋,不容易入睡。因为,卧室温度在18--24度时,床上温度在27度时,睡眠质量最好了。睡前进食会导致胃酸倒流,影响睡眠。注意一下卧室灯光。睡前选择柔和的灯光,睡眠过程中最好关闭一起灯光。

  • 大棚芹菜种植技术(大棚芹菜种植技术和管理)

    作畦时应取出部分畦土过筛备用作覆土。药效可维持2~3个月。苗期水分不宜过大,以免降低地温。苗床上可进行1~2.次分苗,不移苗的要分次间苗,最后使苗距保持在3厘米,播种前未使用除草剂的,要结合间苗及时除草。

  • 角螺孕妇可以吃吗(角螺孕妇可不可以吃)

    角螺孕妇可以吃吗孕妇可以吃海螺,但是要注意不要吃海螺脑。它分泌的物质会导致人体中毒。烹饪时应该去掉海螺的头。海螺也是毛发制品。有过敏病史和溃疡的病人不应该吃。孕妇可以适当地吃它,但是必须把它煮熟。海螺肉富含维生素A、蛋白质、铁和钙,对结膜充血、黄疸、脚气和痔疮等疾病有治疗作用。坚决不能吃死海螺,因为海螺是寒性的,在妇女月经期间和分娩后,以及对于那些患有胃寒的人,不应该吃死海螺。

  • 南瓜干的晒法(如何晒南瓜干)

    我们一起去了解并探讨一下这个问题吧!南瓜干的晒法将整只南瓜刨去外皮,切开,掏出里面的南瓜瓤和南瓜子,然后切成薄薄的环形南瓜片,厚度最好不要超过3mm。把切好的南瓜片挂在阳光充足,而且通风良好的地方晾晒,比如阳台的晾衣架等地方。晒至南瓜片充分干透后即可收起,密封保存。