首页 > 其他分享 >9.20

9.20

时间:2022-09-20 22:38:28浏览次数:56  
标签:容器 9.20 对象 Spring 切面 AOP IOC

什么是Spring?

Spring是一个轻量级的Java开发框架,最早由Rod Johnson创建,最初只有2MB,目的是为解决企业级应用开发的业务逻辑层和其他各层的耦合问题。是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发者可以专注于应用程序的开发。

Spring最根本的使命是解决企业级应用开发的复杂性,即简化Java开发。

Spring可以做的事很多,它为企业级开发提供了丰富的功能,但这些功能的底层都是依赖于它的三大核心思想

  • 控制反转(IOC)
  • 依赖注入(DI)
  • 面向切面编程(AOP)

Spring的优缺点?

优点

  • 方便解耦,简化开发:Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护,交给Spring管理。
  • AOP编程的支持:Spring提供面向切面编程,可以方便的实现对程序进行权限拦截,运行监控等功能。
  • 声明式事务的支持:只需要通过配置就可以完成对事务的管理,无需手段编程
  • 方便程序的测试:Spring对Junit4支持,可以通过注解方便的测试Spring程序
  • 方便集成各种优秀框架:Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀的框架的直接支持(如:Sruts、Hibernate、MyBatis等)。
  • 降低JavaEE API的使用难度:Spring对JavaEE开发中的非常难用的API(JDBC,JavaMail,远程调用等),都提供了封装,使这些API应用难度大大降低。

缺点

  • Spring原本的是一个2MB大小的轻量级框架,却在现在越来越复杂。
  • Spring依赖反射,反射影响性能
  • 使用门槛身高,需要学习Spring

什么是Spring IOC容器

控制反转即IOC(Inversion of Control),它把穿的上的程序代码直接操控的对象交给容器,通过容器来实现对象组件的装配和管理。所谓的控制反转:概念就是对组件对象控制权限的转移,从程序代码本身转移到外部容器。

Spring IOC负责创建对象,管理对象(通过依赖注入(DI)),装配对象,配置对象,并且管理这些对象的整个生命周期。

控制反转(IOC)有什么用

  • 管理对象的创建和依赖关系的维护。对象的创建并不是一件简单的事,在对象关系比较复杂,如果依赖关系需要开发人员维护,那很折磨
  • 解耦,由容器去维护具体的对象
  • 托管了类的产生过程,比如我们需要在类的产生过程中做一些处理,最直接的例子就是代理,如果有容器程序可以把这部分处理交给容器,应用程序则无需去关系类是如何完成代理的。

IOC的优点是什么?

  • IOC或依赖注入把应用的代码量降低到最低
  • 它使应用容易测试,单元测试不再需要单例和JNDI查找机制
  • 最小的代价和最小的侵入性使松散耦合得以实现
  • IOC容器支持加载服务时的饿汉式初始化和懒加载。

Spring IOC的实现机制支持哪些功能

Spring中的IOC的实现原理就是工厂模式加载反射机制

Spring的IOC设计支持以下功能:

  • 依赖注入
  • 依赖检查
  • 自动装配
  • 支持集合
  • 指定初始化方法和销毁方法
  • 支持回调某些方法(单是需要实现Spring接口,略有侵入)

解释AOP

面向切面的编程,或AOP,是一种编程技术,允许程序模块化横向切割关注点,或横切典型的责任划分,如日志和事务管理。

Aspect切面

AOP核心就是切面,它将多个类的通用行为封装成可重用的模块,该模块含有一组API提供横切功能。比如,一个日志模块可以被称作日志的AOP切面。根据需求的不同,一个应用程序可以有若干切面。在Spring AOP中,切面通过带有@Aspect注解的类实现。

标签:容器,9.20,对象,Spring,切面,AOP,IOC
From: https://www.cnblogs.com/bieyinan/p/16712824.html

相关文章

  • 22.9.20
    整数拓展4.//二进制0b十进制八进制0十六进制0x inti=10; inti1=010; inti2=0x10; inti3=0b10;5.浮点拓展(小数)//BigDecimal数学工具类(银行业务使用)//f......
  • 2022..9.20
    IDEA安装IDEA官网:https://www.jetbrains.com/什么是IDE:IDE中文名:集成开发环境用于提供程序开发环境的应用程序关键单词关键字 标识符注意点1.所有标识首字母只能以......
  • 9.20水题大赏
    2022-9-20T1:扫雷一眼看上去是一个DP题,但通过观察样例以及自己列举数据可以发现,若整个矩阵的第一个已确定是否有雷,那么整个矩阵都可以确定了。因此所有情况只可能有\(0\)......
  • Test 2022.09.20
    2022年9月20日的测试(SCOI2005专场)T1扫雷思考起来很简单,对于任意一个输入的\(a[i]\),它会约束的格子只有\(i-1,i,i+1\)三个,也就是只要算出当前在\(i-1,i\)位置摆放的情......
  • webstrom ——activation code (最新2022.9.20)
    右键-->全选-->复制,粘贴到Activationcode中4U1192YQAG-eyJsaWNlbnNlSWQiOiI0VTExOTJZUUFHIiwibGljZW5zZWVOYW1lIjoi5rC45LmF5r+A5rS7IHd3d8K3YWppaHVvwrdjb20iLCJhc3NpZ2......
  • 【学习随笔】2022.9.20 Ceres
    代码来源为SLAM14讲ch6 1#include<iostream>2#include<opencv2/core/core.hpp>3#include<ceres/ceres.h>4#include<chrono>56usingnamespace......
  • 九月加息75基本以成定局 年底终端利率将决定中期大选前风险市场走势 — 2022.9.20
    九月加息75基本以成定局年底终端利率将决定中期大选前风险市场走势—2022.9.20随着昨天晚上美股的走势BTC和ETH因为昨天上午开始出现的下跌恐慌情绪终于消散了一些,虽然......
  • 2022.9.20 1005-1008
    1005#include<stdio.h>#include<stdlib.h>#include<math.h>intmain(){unsignedlonglongn;scanf("%llu",&n);unsignedlonglongm=(unsignedlonglong......
  • 9.20Leetcode记录
    一、字符串的排列题干:输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s="abc"输出:["abc","a......
  • 9.20已解决问题
    InvalidOperationException:Unabletoresolveservicefortype'Cities.Models.IRepository'whileattemptingtoactivate'Cities.Controllers.HomeController'.在p......