![](https://img-blog.csdnimg.cn/direct/cbc9cb06e4694c4c9a14db2947aaba7c.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
spring渐进深入
文章平均质量分 88
渐进式深入spring框架
蒾酒
热爱编程、熟悉全栈开发,商务合作或者有开发需求可加文章底部vx,期待与大家共同进步。
个人gitee主页:https://gitee.com/mi9688-wine
展开
-
Spring在业务中常见的使用方式
很多时候,我们需要对不同的场景进行不同的业务逻辑处理,举个例子,譬如针对不同类型的用户,购买商品的折扣不同。随着升级扩展可能会新增用户类型,比如超级会员,打七折。。。。。。。这种if-else逻辑显然不够优雅。我们可以借助Spring IOC实现策略模式进行优化,只需要将不同的策略类定义成 Spring Bean,然后在需要使用策略的地方通过 IOC 容器获取对应的 Bean 即可。如下步骤。原创 2024-01-17 23:00:05 · 1638 阅读 · 19 评论 -
Spring事务失效的场景详解
Spring中比较容易失效的就是通过@Transactional 定义的声明式事务,他在以下几个场景中会导致事务失效,首先,就是Spring的@Transactional是基于Spring的AOP机制实现的,而AOP机制又是基于动态代理实现的。那么如果代理失效了,事务也就会失效。原创 2024-01-16 22:14:07 · 1747 阅读 · 27 评论 -
Spring的AOP失效场景详解
Spring的AOP(面向切面编程)是一种强大的技术,用于在应用程序中实现横切关注点的模块化。虽然Spring的AOP在大多数情况下都是有效的,但在某些场景下可能会失效。下面来分析Spring AOP失效的常见场景关于什么是Spring AopSpring高手之路-Spring AOP-CSDN博客首先,Spring的AOP其实是通过动态代理实现的,所以,想要让AOP生效,前提必须是动态代理生效,并且可以调用到代理对象的方法非Spring管理的对象私有方法调用静态方法调用final方法调用。原创 2024-01-16 21:34:10 · 1812 阅读 · 11 评论 -
Spring中Bean的五大作用域
在Spring框架中,Bean的作用域指定了对象的生命周期和访问范围。Spring提供了五种Bean的作用域。原创 2024-01-03 12:48:40 · 1432 阅读 · 16 评论 -
Spring Bean、Java Bean和对象的区别与联系
在Spring官方文档中对Bean的解释如下:译文:在 Spring 中,构成应用程序主干并由Spring IoC容器管理的对象称为bean,bean是一个由Spring IoC容器实例化、组装和管理的对象。概念简单明了,我们提取处关键的信息:1. bean是对象,一个或者多个不限定2.bean由Spring中一个叫IoC的东西管理由此可以得出,由Spring(Ioc)管理的对象就称之为Bean。简单来说符合Java Bean规范的特殊Java类就是Java Bean。原创 2024-01-03 12:24:28 · 1681 阅读 · 1 评论 -
Spring中@Autowired和@Resource注解异同点
Autowired和@Resource是在 Java 开发中用于实现依赖注入的注解。@Autowired是 Spring 框架提供的注解,用于自动装配(自动注入)依赖。通过在需要注入依赖的字段、构造方法或者方法上使用@Autowired注解,Spring 容器会自动寻找匹配类型的 Bean,并将其注入到被注解的位置。如果存在多个满足条件的 Bean,则可以使用@Qualifier注解指定具体的 Bean。@Resource是 JavaEE 规范提供的注解,也可用于依赖注入。原创 2023-12-29 17:13:47 · 1938 阅读 · 13 评论 -
Spring事务的传播机制(行为、特性)
同样是这段代码,有个log()记录日志方法事务传播机制设置为REQUIRES_NEW,这意味着在addUser()中 insertUser()、init()是融合到了addUser()的外层事务中,但是log(),自己单独开启了一个事务,log()内部异常了,就会回滚log()方法自己,对于addUser()没有影响。嵌套事务是独立于外部事务的子事务,它具有自己的保存点(savepoint),可以回滚到该保存点。以非事务方式执行操作,如果当前存在事务,则将其挂起,直到操作完成后再恢复事务。原创 2023-12-29 02:20:47 · 1173 阅读 · 1 评论 -
Spring依赖注入以及使用建议
很明显,使用了Autowired注解,说明这个类依赖了Spring容器,这让我们在进行UT的时候必须要启动个Spring容器才可以测试这个类,显然太麻烦,这种测试方式非常重,对于大型项目来说,往往启动一个容器就要好几分钟,这样非常耽误时间。我们都知道,根据SOLID设计原则来进,一个类的设计应该符合单一职责原则,就是一个类只能做一件功能,当我们使用基于字段注入的时候,随着业务的暴增,字段越来越多,我们是很难发现我们已经默默中违背了单一职责原则的。如果我们的两个Bean循环依赖,就会抛出该异常。原创 2023-12-27 15:40:58 · 1148 阅读 · 5 评论 -
SpringBean的生命周期
SpringBean的生命周期详情提供一种配置方式,在XML配置中指定Bean的初始化方法。如果Bean在配置文件中定义了初始化方法那么该方法会被调用。在的invokelnitMethods方法中调用如果Bean在配置文件中定义了销毁方法,那么该方法会被调用在的destroy方法中实现可以看到,整Bean的创建的过程都依赖于这个类,而销毁主要依赖这个类的入口处,doCreateBean的核心代码如下,其中包含了实例化、设置属性值、初始化Bean以及注册销毁回调的几个核心方法。原创 2023-12-26 20:41:01 · 2124 阅读 · 8 评论 -
Spring AOP简介
AOP(Aspect-Oriented Programming),即面向切面编程,用人话说就是把公共的逻辑抽出来,让开发者可以更专注于业务逻辑开发。和IOC一样,AOP也指的是一种思想。AOP思想是OOP(Object-Oriented Programming)的补充。OOP是面向类和对象的,但是AOP则是面向不同切面的。一个切面可以横跨多个类和对象去操作,极大的丰富了开发者的使用方式,提高了开发效率。权限校验事务管理创建订单日志打印。原创 2023-12-25 14:15:38 · 701 阅读 · 0 评论 -
SpringIOC简介
在容器启动的时候,它会根据每个bean的要求,将bean注入到SpringContainer中。同样是上面的例子,假如说BeanA需要修改,如果没有IOC的话,所有引用到A的其他bean都需要感知这个逻辑,并且做对应的修改。而在IOC 中,控制关系发生了反转。如果a1和a2都引用了A,那么a1和a2就可能new 两个A实例,实际上,我们只需要一个就好了。来说,如果B要使用A,那还要把c,d,e,f多个类全都感知一遍,这显然是非常麻烦且不合理的。值得说明的是,IOC只是一种思想和理念,可以有不同的实现方式。原创 2023-12-25 02:25:32 · 512 阅读 · 1 评论 -
Spring整体简介
Spring 是一个开源的轻量级应用框架,它为企业级 Java 应用程序开发提供了全面的基础设施支持。Spring的官方网站是:https://spring.io/原创 2023-12-25 02:07:22 · 422 阅读 · 0 评论