spring boot注解笔记(持续更新)

spring boot注解笔记

本博客部分内容非原创,链接已经注明

@ConditionalOnProperty

该注解根据yml中的配置来决定该配置类或者某一bean是否进行配置

即可以作用在方法上也可以作用在类上

如yml中:

myconfig.mybean = true

代码中:

@Bean
@ConditionalOnProperty(prefix="myconfig",name = "mybean", havingValue = "true")
public MyBean myBean(){
    return new MyBean();
}

在上面代码中,havingValue的值与yml中的值一样则将myBean注入到容器中去

如果在yml中找不到该值,则不注入


@Autowired

该注解为自动注入

该注解属性required为false时,在找不到匹配 Bean 时也不报错


@Transactional

该注解为事物注解

本节参考博客

  1. value 和 transactionManager 属性
    • 当配置了多个事务管理器时,可以使用该属性指定选择哪个事务管理器
  2. propagation 属性
    • Propagation.REQUIRED
      如果当前存在事务,则加入该事务,如果当前不存在事务,则创建一个新的事务。
    • Propagation.SUPPORTS
      如果当前存在事务,则加入该事务;如果当前不存在事务,则以非事务的方式继续运行。
    • Propagation.MANDATORY
      如果当前存在事务,则加入该事务;如果当前不存在事务,则抛出异常。
    • Propagation.REQUIRES_NEW
      重新创建一个新的事务,如果当前存在事务,暂停当前的事务。
    • Propagation.NOT_SUPPORTED
      以非事务的方式运行,如果当前存在事务,暂停当前的事务。
    • Propagation.NEVER
      以非事务的方式运行,如果当前存在事务,则抛出异常。
    • Propagation.NESTED
      和 Propagation.REQUIRED 效果一样。
  3. isolation 属性
    • 事务的隔离级别,默认值为 Isolation.DEFAULT。
    • Isolation.DEFAULT
      使用底层数据库默认的隔离级别。
    • Isolation.READ_UNCOMMITTED
    • Isolation.READ_COMMITTED
    • Isolation.REPEATABLE_READ
    • Isolation.SERIALIZABLE
  4. timeout 属性
    • 事务的超时时间,默认值为-1。如果超过该时间限制但事务还没有完成,则自动回滚事务。
  5. readOnly 属性
    • 指定事务是否为只读事务,默认值为 false;为了忽略那些不需要事务的方法,比如读取数据,可以设置 read-only 为 true。
  6. rollbackFor 属性
    • 用于指定能够触发事务回滚的异常类型,可以指定多个异常类型。
  7. noRollbackFor 属性
    • 抛出指定的异常类型,不回滚事务,也可以指定多个异常类型。

@Qualifier

@Qualifier与@Autowired组合使用

当@Autowired根据类型匹配到多个Bean时,就需要@Qualifier指定一个名称

如有情况:配置了多个数据源dataSourceA、dataSourceB

@Autowired
@Qualifier("dataSourceA")
private DataSource dataSourceA

@Autowired
@Qualifier("dataSourceB")
private DataSource dataSourceB

注:在注入的时候要给定名称

使用@Bean则配合@Qualifier给名

@Component、@Service、@Controller直接在给定名称即可


@Primary

当出现多个同类型Bean时候,加上该注解的Bean会被优先默认注入


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值