聪酱带你学Spring
文章平均质量分 72
一个Quick Start式的框架快速入门
王耳总丶
一个奇怪的程序猿
展开
-
事务的传播机制
事务的传播机制事务的传播行为就是在两个都启用了事务的方法进行嵌套调用时,外层事务和内层事务的执行动作,Spring支持七种传播方式,他们的效果如下:REQUIRED:如果有外层事务,则加入这个事务,否则开启一个新的事务SUPPORTS:如果有外层事务,则加入这个事务,否则就以非事务方式执行MANDATORY:如果有外层事务,则加入这个事务,否则抛出异常REQUIRES_NEW:开启一个独立的新事务执行NOT_SUPPORTED:方法不应该以事务方法执行,如果有外层事务,就以非事务方式执行NE原创 2021-06-25 21:28:12 · 2971 阅读 · 1 评论 -
声明式事务
声明式事务事务是描述对数据库的一组操作,比如在转账业务中,A向B转了一笔钱,那么从A的账户中扣款和把钱打入B的账户这两个数据操作就应该放在一个事务中,不允许只单独执行其中一个操作,如果在事务执行过程中有错误产生,则整个事务中的操作需要全部回退。关于事务可以了解一下事务的ACID特性Spring对事务做了支持,可以用注解标记一个方法中的操作为一组事务,这就是Spring声明式事务为了测试,我们创建一个Service类,定义一个新增操作的方法,这个方法一定会产生一个异常,来模拟业务产生错误的情景@Ser原创 2021-06-25 21:27:13 · 332 阅读 · 1 评论 -
AOP的各种通知
AOP的各种通知在使用Spring的AOP特性中,Spring为我们提供了多种通知注解,方便我们灵活地用各种方式做切入首先我们定义一个用于简单除法运算的主业务类和主业务方法,来方便我们演示各种通知方法的切入效果public class MyCalculator { public int calculate(int a, int b) { int result = a / b; System.out.println("切入点方式执行,结果为" + result)原创 2021-04-01 22:51:53 · 2814 阅读 · 0 评论 -
使用Spring的AOP特性
使用Spring的AOP特性前言AOP是Spring框架提供的一个重要的特性,使用AOP,可以在若干个业务逻辑中,横向地插入一段业务逻辑,实现解耦合,这种方式其实有点类似过滤器的思路,他的底层是使用JDK动态代理或者CGLib第三方库实现的相关术语在AOP特性中,首先有几个术语需要理解一下连接点在主业务类中,理论上可以被增强的方法切入点在主业务类中,实际被增强的方法,注意切入点和连接点的区别,一个是理论上的,一个是实际的通知用于增强主业务逻辑的代码,一般是切面类中的方法切面切面是一个原创 2021-03-31 13:51:06 · 228 阅读 · 0 评论 -
自定义Bean加载条件
自定义Bean加载条件有时候我们需要自定义更加灵活的Bean的加载条件,这时候Spring为我们提供了一个@Conditional注解,我们可以使用这个注解实现复杂的自定义条件使用@Conditional注解,首先我们需要创建一个条件判断类,该类实现Condition接口的一个判断方法以下用例是一个可以根据Spring激活环境是否为dev来判断是否加载Bean的判断类public class MyCondition implements Condition { @Override p原创 2021-03-29 21:23:09 · 536 阅读 · 0 评论 -
批量添加Bean
批量添加Bean除了使用@Component注解,或者@Configuration+@Bean注解添加Bean,还有一种方式可以批量添加Bean,就是使用@Import注解@Import@Import注解添加在自定义的配置类上,在注解的属性中设置一个或多个需要添加的组件的Class类即可将这些组件添加到容器中首先我们定义三个类,并且不添加@Component注解@Data@AllArgsConstructor@NoArgsConstructorpublic class Person {原创 2021-03-29 13:08:16 · 527 阅读 · 2 评论 -
添加非启动类所在包下的Bean
添加非启动类所在包下的Bean我们使用@Component注解,或者@Configuration+@Bean注解,可以轻松地将组件添加到容器中,这是因为在Spring Boot项目中,Spring Boot会在启动时自动扫描主启动类下的包,将标注了这两种注解的类都添加到容器不过有时,我们需要添加一些非启动类下的组件,这个时候该怎么做呢?现在主启动类在blackball包下,需要添加的组件在other包下,每个组件都添加了@Component注解或者其衍生注解Controller类@Control原创 2021-03-28 21:08:23 · 438 阅读 · 2 评论 -
Bean生命周期
Bean生命周期有时候我们需要在Bean构造过程中的各个时机,执行一些增强逻辑,这时候Spring为我们提供了多种灵活的构造时的增强方式,这些增强方式组成了Bean生命周期的一部分指定初始化和销毁方法initMethod在指定一个Bean时,我们可以绑定一个initMethod,Spring在完成这个Bean的实例化之后,会调用绑定的initMethod@Datapublic class Person { private int age; private String nam原创 2021-03-27 12:56:49 · 235 阅读 · 0 评论 -
Bean懒加载
Bean懒加载在默认的情况下,当我们启动Spring,不管我们有没有使用到Bean,Spring总是在创建完IOC容器后马上向IOC容器中添加我们定义的Bean现在我们在添加Bean的时候打印一行文字来测试Bean加载的时机@Configurationpublic class MyConfiguration { @Bean public Person person() { System.out.println("加载Bean对象"); return原创 2021-03-26 17:02:14 · 1750 阅读 · 2 评论 -
多环境下Bean的加载
多环境下Bean的加载在实际开发中,我们往往需要区分不同的环境,比如开发环境,测试环境,线上环境,在各个环境中使用的Bean,或者Bean的设置都是不一样的。使用@Profile注解,可以区分在不同环境下需要添加到IOC容器的Bean。我们将三个Person类型的Bean添加到IOC容器中,并在方法上添加@Profile注解,以区分不同的开发环境需要激活的Bean@Configurationpublic class MyConfiguration { @Bean @Profile(原创 2021-03-26 17:00:40 · 392 阅读 · 0 评论 -
Bean属性赋值
Bean属性赋值@Value当我们给Bean中的属性赋值时,除了常规的赋初始值,还可以通过@Value注解赋值@Componentpublic class Person { @Value("18") private int age; @Value("wang") private String name;}那么这种做法和常规赋值的做法相比有什么优势呢?通过@Value赋值,可以进行数学计算,更常用的是,这种方式可以从配置文件中读取值数学计算原创 2021-03-26 00:10:10 · 977 阅读 · 0 评论 -
根据名字获取Bean
根据名字获取Bean当IOC容器中存在多个同类的Bean时,此时如果使用@Autowired注解从容器中获取Bean,会出现异常,因为这是使用匹配类的方式寻找所需要的Bean,而同类的Bean有多个@Configurationpublic class MyConfiguration { @Bean public Person person1() { return new Person(18, "wang"); } @Bean public P原创 2021-03-26 00:07:48 · 2316 阅读 · 0 评论 -
多实例Bean
多实例Bean单例模式Bean在Spring中,Bean默认是单例的,也就是说当我们向IOC容器中添加一个Bean,多次获取Bean,默认是同一个Bean,我们也可以显示地声明Bean为单例,使用@Scope设置属性为singleton即可@Configurationpublic class MyConfiguration { @Bean @Scope("singleton") public Person person(){ return new Perso原创 2021-03-26 00:02:26 · 2207 阅读 · 0 评论 -
使用Spring的IOC特性
使用Spring的IOC特性前言我本人接触后台开发也有一段时间了,现在计划写一系列关于Spring全家桶的文章,从Spring Framework开始,到Spring Boot和Spring Cloud,一方面做一些知识输出,一方面用于记录学习情况,也方便平时速查。当然后续还有更多其他关于后台技术的使用的文章,这个要看我的个人时间安排。我不想介绍太多关于底层实现的东西,那些东西可以从网上一些带人看源码的文章和视频找到,或者一些教人面试的八股文也有,我只介绍框架的最基本,最实用的使用方法,而且一些冷门的原创 2021-03-25 13:50:21 · 1454 阅读 · 8 评论