前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【原创】Spring框架

【原创】Spring框架

作者头像
零点
发布2023-03-03 20:41:42
2000
发布2023-03-03 20:41:42
举报
文章被收录于专栏:微科技微科技

Spring基础

1.Spring概述:

Spring核心是控制反转(IOC)和面向切面编程(AOP)。主要作用是实现代码的解耦,如Spring的IOC完成对对象的创建和管理,完成了对对象的创建和调用的解耦。 Spring本质上是一个容器,是内存中的一块空间。容器中存储Bean对象。

2.Spring的Ioc

(1)SpringIoc概念: SpringIoc是一个理论,一个指导思想。分为控制和反转两部分。 控制:对象的创建,属性的赋值,对象生命周期管理等。 反转:将管理对象的权限转移给代码之外的容器实现。 (2)Ioc的技术实现DI(依赖注入): Spring框架,使用DI完成对象的创建和属性的注入。 Spirng底层通过使用反射机制,通过反射完成对象的创建和属性的赋值(Xml文件中的Bean标签中的Class属性指定了反射需要创建对象的完全限定名。) Spring容器实际将对象保存在ConcurrentHashMap(并发编程的Map集合)中。Map的Key为bean标签的id,Value为bean标签的对象,加载Spring容器,Spring容器就会自动为Bean标签创建对象。 (3)Spring中的自动注入 Spring可以根据某些规则(byName,byType)给类中的属性完成赋值,只对引用类型有效。 byName(按名称注入):java类中引用类型属性名称和Spring容器中的Bean对象的id一致。且数据类型也是一致的,使用bean标签中autowire属性完成注入。 byType(根据类型注入):java类中引用类型的数据类型和Spring容器中bean的class值是同源关系(需要赋值的属性类型和bean中的class的关系必须为父子关系或者接口和实现类的关系),使用bean标签中autowire属性完成注入。 (4)Spring中的常用注解: @Component注解:使用在类上,创建对象并将对象放入Spring容器中。 @Repository注解:使用在dao层实现类,表示dao对象,可以访问数据库 @Service注解:放在业务层实现类上,表示业务层对象,业务层有事务的功能。 @Controller注解:放在控制器类上,表示创建控制器对象,控制器对象可以接受和处理请求。 @Value注解:使用在属性上或者在set方法上,用于给简单数据类型的属性赋值。 @Autowire注解:通过byType或byName的方式完成对引用数据类型的属性的自动注入,默认是byType自动注入。可以添加到属性上,也可以添加到set方法上。 @Resource注解:JDK提供的给属性赋值,默认是按照byName的方式进行对引用数据类型的属性赋值,可以加在属性上也可以加在set方法上。 (5)Context的常用标签 开启组件扫描,开启了该功能才能让注解生效。 用于将外部的属性文件(Properties)文件保存到Spring中,在注解上通过${key}获取properties文件中的内容。

3.Spring的Aop(面向切面编程)

(1)Aop概念: Aop(Aspect Orient Programming):面向切面编程。 Aspect:切面,给业务方法增加功能,一般是为非业务方法,切面功能一般可以复用。例如:日志记录,事务控制,权限检查,统计信息等。 (2)Aop作用: Aop是一个动态思想,在程序运行期间,创建代理对象,使用代理对象执行方法时,增加切面的功能,代理对象是存在在内存中的。 可以使切面功能复用,实现业务功能和非业务功能进行解耦合。 (3)Aop中的术语: Aspect:切面,给业务方法增加功能。 JoinPoint:连接点,连接切面的业务方法。 Pointcut:切入点,是一个或多个连接点的集合。表示这些方法执行时,都能增加切面的功能。表示切面的执行位置。 target:目标对象,指定增强功能的对象。 Advice:通知,指定切面的执行时间。 Aop中的三要素:Aspect,Pointcyt,Advice

4.Spring实现事务控制

(1)事务的概念: 事务是多条Sql语句的集合,作为一个整体执行,要么都成功,要么都失败。 (2)JDBC和Mybatis完成事务管理: ①JDBC完成事务管理:

代码语言:javascript
复制
   public void updateUser(){
       Connection conn = new Connection();
       conn.setAutoCommit(false);
       insert();
       conn.commit();
    }

②Maybatis完成事务管理:

代码语言:javascript
复制
   public void updateUser(){
        SqlSession session = SqlSession.openSession(false);
        try{
            session.insert();
            session.update();
            session.commit();
        }catch(Exception e){
            session.rollback();
        }
    }

(3)通过Spring完成对事务的管理: 事务管理器接口:PlatformTransactionManager,用于针对不同事务管理技术的公共接口,所有事务管理技术(如JDBC或Mybatis)都是通过实现该接口实现事务的管理。JDBC和Mybatis访问数据库的事务管理器实现类为:DataSorceTranactionManager。

代码语言:javascript
复制
  **Spring框架本质是使用Aop的环绕通知完成事务管理。**

5.Spring使用注解@Transaction控制事务

(1)@Transactional注解,使用注解的属性完成事务的控制(隔离级别,传播行为,超时) (2)@Transactional注解的属性(使用在业务方法的上面)

代码语言:javascript
复制
  ①propagation:事务的传播行为,Propagation类提供了枚举值,完成事务传播行为的设置。
  ②isolation:事务的隔离级别,Isolation类提供了枚举值,完成事务隔离级别的设置。
  ③redaOnly:boolean类型,表示数据库操作是否为只读操作。默认为false。
  ④timeout:事务超时,默认是-1,整数值,单位是秒。
  ⑤rollbackFor:表示回滚异常类列表,是个数组,每个值都是异常类型的Class。
  ⑥rollbackForClassName:表示回滚的异常类列表,是String类ing的值。
  ⑤noRollbackFor:表示不需要回滚异常类列表,是个数组,每个值都是异常类型的Class。
  ⑥noRollbackForClassName:表示不需要回滚的异常类列表,是String类型的值。

(2)使用@Transactional注解时配置文件的配置:

代码语言:javascript
复制
  ①声明事务管理器。
  ②开启注解驱动。

6.Spring使用Aspectj框架控制事务

使用aspectj的Aop完成声明式事务控制。 操作步骤: (1).实例化事务管理器对象 (2).配置事务切面 (3).进行aop织入

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spring基础
    • 1.Spring概述:
      • 2.Spring的Ioc
        • 3.Spring的Aop(面向切面编程)
          • 4.Spring实现事务控制
            • 5.Spring使用注解@Transaction控制事务
              • 6.Spring使用Aspectj框架控制事务
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档