Springboot学习七 spring的一些注解
一 事务控制
@Service
public class CityServiceImpl implements CityService { @Autowired
private CityMapper cityMapper; @Override
@Transactional(value = "primaryTxMan", readOnly = true)
public List<City> findByState(String state) {
return this.cityMapper.findByState(state);
}
}
@Transcational(readOnly=true) 这个注解一般会写在业务类上,或者其方法上,用来对其添加事务控制。当括号中添加readOnly=true, 则会告诉底层数据源,这个是一个只读事务,对于JDBC而言,只读事务会有一定的速度优化。
二 Transactional的value
value这里主要用来指定不同的事务管理器;主要用来满足在同一个系统中,存在不同的事务管理器。比如在Spring中,声明了两种事务管理器txManager1, txManager2.
然后,用户可以根据这个参数来根据需要指定特定的txManager.
那有同学会问什么情况下会存在多个事务管理器的情况呢? 比如在一个系统中,需要访问多个数据源或者多个数据库,则必然会配置多个事务管理器的。
三 value = "primaryTxMan" 表示提供的事务管理器,是一个bean的名字
primaryTxMan是一个bean的名字,在下面配置。
四 @Configuration @Bean
@Configuration注解该类,等价 与XML中配置beans;用@Bean标注方法等价于XML中配置bean
比如如下的配置类AppConfig和下面的XML配置是等价的。
@Configuration
public class AppConfig { @Bean
public TransferService transferService() {
return new TransferServiceImpl();
}
}
下面的XML和上面的配置等价
<beans>
<bean id="transferService" class="com.acme.TransferServiceImpl"/>
</beans>
如下是primaryTxMan这个bean的定义,bean的名字是primaryTxMan
@Bean(name = "primaryTxMan")
public PlatformTransactionManager primaryTransactionManager() {
logger.info("primary dataSource--" + this.primeryDataSource().hashCode());
return new DataSourceTransactionManager(this.primeryDataSource());
}
五 下面看看 DataSourceTransactionManager 的定义,看看如何和DataSource绑定的
DataSourceTransactionManager的构造函数需要传入一个DataSource类型的参数。下面看this.primeryDataSource()是如何提供DataSource的实现的:
@Primary
@Bean(name = "primaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.primary")
public DataSource primeryDataSource() {
return new DruidDataSource();
}
@Primary: 如果一个接口有两个实现类,可以用@Autowired,指定不同的名字进行绑定;另外一种方式就是使用@Primary,指定优先绑定的那个实现类。
@ConfigurationProperties(prefix = "spring.datasource.primary"):指定和配置文件中的属性绑定。
Springboot学习七 spring的一些注解的更多相关文章
- springboot 学习之路 2(注解介绍)
目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...
- Spring学习(十一)-----Spring使用@Required注解依赖检查
Spring学习(九)-----Spring依赖检查 bean 配置文件用于确定的特定类型(基本,集合或对象)的所有属性被设置.在大多数情况下,你只需要确保特定属性已经设置但不是所有属性.. 对于这种 ...
- Spring学习(六)-----Spring使用@Autowired注解自动装配
Spring使用@Autowired注解自动装配 在上一篇 Spring学习(三)-----Spring自动装配Beans示例中,它会匹配当前Spring容器任何bean的属性自动装配.在大多数情况下 ...
- 【SpringBoot】15. Spring Boot核心注解
Spring Boot核心注解 1 @SpringBootApplication 代表是Spring Boot启动的类 2 @SpringBootConfiguration 通过bean对象来获取配置 ...
- SpringBoot学习(三)-->Spring的Java配置方式之读取外部的资源配置文件并配置数据库连接池
三.读取外部的资源配置文件并配置数据库连接池 1.读取外部的资源配置文件 通过@PropertySource可以指定读取的配置文件,通过@Value注解获取值,具体用法: @Configuration ...
- SpringBoot学习(二)-->Spring的Java配置方式
二.Spring的Java配置方式 Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置. 1.@Configuration 和 @Bean Spring的Java配置方式是通过 @ ...
- SpringBoot学习(七)-->SpringBoot在web开发中的配置
SpringBoot在web开发中的配置 Web开发的自动配置类:在Maven Dependencies-->spring-boot-1.5.2.RELEASE.jar-->org.spr ...
- SpringBoot学习(一)-->Spring的发展
一.Spring的发展 1.Spring1.x 时代 在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xm ...
- spring cloud学习(七)Spring Cloud Config(续)
Spring Cloud Config(续) 个人参考项目 个人博客 : https://zggdczfr.cn/ 个人参考项目 : (整合到上一个案例中)https://github.com/Fun ...
随机推荐
- dnSpy进行反编译修改并编译运行EXE或DLL
dnSpy对目标程序(EXE或DLL)进行反编译修改并编译运行 本文为原创文章.源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称.作者及网址,谢谢! 本文使用的工具下载地址为: h ...
- phpstorm pycharm IntelliJ IDEA激活
phpstorm 和 pycharm server选项里边输入 http://idea.imsxm.com/ IntelliJ IDEA 1. 到网站 http://idea.lanyus.com/ ...
- Android中List循环遍历性能对照
在android开发中仅仅要是列表式风格界面我们差点儿都须要用到List来存放数据,在数量非常少的List的话差点儿不论什么一种循环遍历方式总体性能都无区别.可是当我们遇到数据量稍大的时候有必要考虑用 ...
- Linux的经常使用命令(1) - 指定执行级别
命令:init [0123456] 执行级别 0:关机 1:单用户 2:多用户状态没有网络服务 3:多用户状态有网络服务 4:系统未使用保留给用户 5:图形界面 6:系统重新启动 经常使用执行级别是3 ...
- EasyDSS RTMP流媒体解决方案之Windows服务安装方案
Windows服务安装 EasyDSS_Solution流媒体解决方案,可以通过start一键启动.在实际应用中,我们希望可以设置成系统服务,那么下面我将会介绍,如何在windows中将流媒体解决方案 ...
- 前端面试题(一)JS篇
内置类型 JS 中分为七种内置类型,七种内置类型又分为两大类型:基本类型和对象(Object). 基本类型有六种: null,undefined,boolean,number,string,symbo ...
- NFT是什么,有什么前景?
去年 11 月,Crypokitties 的发布给加密货币的世界带来了风暴,有些加密猫的价格甚至涨到了 30 万美元,以太坊网络拥堵不堪,平均贡献了当时以太坊网络30%的交易额.当 Cryptokit ...
- 移动App该怎样保存用户password
版权声明:本文为横云断岭原创文章,未经博主同意不得转载.微信公众号:横云断岭的专栏 https://blog.csdn.net/hengyunabc/article/details/34623957 ...
- Machine Learning No.7: Support Vector Machines
1. SVM hypothsis 2. large margin classification 3. kernals and similarity if f1 = 1; if x if far fr ...
- hdu 2015校赛1002 Dual horsetail (思维题 )
Dual horsetail Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...