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