栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spirng 的总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spirng 的总结

Spring的总结 1.spring是什么

​ spring是一个在JAVAEE的领域中,轻量级的,开源的AOP和IOC的框架

2.spring能干什么

​ spring可以让我们在开发中降低项目的复杂度,降低开发的难度和周期,可以粘合大量的第三方工具,降低各自的耦合度,提升了我们的开发效率。

3.spring的优点
  1. 高内聚,低耦合
  2. 声明式事务管理的支持
  3. AOP的支持
  4. 方便集成各种优秀框架
  5. 降低了JAVA EE 的API 的使用难度
  6. 方便程序的测试
4.IOC是什么

​ IOC就是Inversion of Control控制反转,是一种设计的概念。简单来说就是把开发者创建对象的这个权利交给了容器本身,这个权利的互换就叫做控制反转

​ 而说到了IOC,就不得不说DI了,DI就是依赖注入。通过控制反转,我们创建对象已经交由容器本身来处理了,那么容器创建的bean中的属性注入和引用,就叫做依赖注入。

5.AOP是什么

​ AOP就是aspect of programming ,直译的话就是面向切面编程。是通过预编译或者运行期间,利用动态代理技术实现了程序的功能统一添加和管理。

​ AOP可以实现的功能大概有如下

  • ​ 日志管理
  • ​ 事务管理
  • ​ 监控统计
  • ​ 安全控制
  • ​ 异常处理

​ AOP实际上也就是使用了动态代理的技术,而我们实现动态代理的方式有哪些?

  1. ​ java自带的动态代理类proxy (这个代理方式代理的对象必须得继承了接口)

    如下演示

    package com.demo.service;
    public interface IPersonService {
        public void test(int a,int b);
    }
    
    
    package com.demo.service;
    public class PersonService implements IPersonService{
        @Override
        public void test(int a, int b) {
            System.out.println(a+b);
        }
    }
    
    
    package com.demo.service;
    public class Demo1 {
        public static void main(String[] args) {
            IPersonService personService = new PersonService();
            personService.test(1,1);//结果2
        }
    }
    

    然后我增加一个代理类

    package com.demo.service;
    public class PersonProxy implements InvocationHandler {
        private Object instance;
        public PersonProxy(Object instance){
            this.instance = instance;
        }
        @Override
        public Object invoke(Object o, Method method, Object[] objects) throws Throwable {
            System.out.println(Arrays.toString(objects));// [1,1]
            //我们可以在代理过程中对目标方法进行通知,增强
            objects[0] = 2;
            return method.invoke(instance,objects);
        }
    }
    
    //测试类代码修改
    package com.demo.service;
    public class Demo1 {
        public static void main(String[] args) {
            IPersonService personService = new PersonService();
            personService =(IPersonService)Proxy.newProxyInstance(personService.getClass().getClassLoader(),personService.getClass().getInterfaces(), new PersonProxy(personService));
            personService.test(1,1);// 结果是3
        }
    }
    
  2. ​ cglib(需要导入包)的技术

    这个就不再演示(我也不会啊),在spring中大量使用到了这个技术,因为这种代理方式不需要用到接口

6.AOP的核心概念
  1. ​ pointcut(切入点)

    pointcut指的是将要执行advice的方法

  2. ​ aspect(切面)

    包含了pointcut的定义和advice的定义

  3. ​ Joinpoint(连接点)

    所有可以被通知的方法

  4. ​ advice(通知)

    通知也可以理解为增强,就是在切入点方法执行的前后或者过程中,执行一些特定的代码

    通知的类型有如下几种:

    1. 前置通知(before)
    2. 环绕通知(around)
    3. 后置通知(after-returnning)
    4. 异常通知(after-throwing)
    5. 最终通知(after)
    6. 引介通知(DeclareParents)少用
  5. ​ weaving(织入)

    织入是指目标方法被通知增强的过程

  6. ​ target(目标对象)

    被通知的对象

7.spring对于持久层的支持

​ spring有JDBC的模版,虽然我们通常会使用到mybatis去操作数据库,但是spring也是可以单独支持对于数据库的一个操作。

​ 而基于AOP,spring可以对我们的事务管理做了许多简化,让我们更为方便地去管理我们的事务

​ 我们可以通过方便地XML配置或者注解配置来实现我们对于事务的管理。

​ spring对于事务的传播行为定义了7种。

​ Spring 定义了如下七中传播行为,这里以A业务和B业务之间如何传播事务为例说明:

   

对于事务的配置,开启事务的注解驱动。使用注解@Transactional其中可以指定事务回滚的异常类型(Roll back for),定义传播行为(propagation)等

  
      
   
 

使用XML配置则需要定义advice配置事务的切入点以及相关的属性

  
    
      
    
  

  
    
  
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/284670.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号