一 事务控制

@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的一些注解的更多相关文章

  1. springboot 学习之路 2(注解介绍)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  2. Spring学习(十一)-----Spring使用@Required注解依赖检查

    Spring学习(九)-----Spring依赖检查 bean 配置文件用于确定的特定类型(基本,集合或对象)的所有属性被设置.在大多数情况下,你只需要确保特定属性已经设置但不是所有属性.. 对于这种 ...

  3. Spring学习(六)-----Spring使用@Autowired注解自动装配

    Spring使用@Autowired注解自动装配 在上一篇 Spring学习(三)-----Spring自动装配Beans示例中,它会匹配当前Spring容器任何bean的属性自动装配.在大多数情况下 ...

  4. 【SpringBoot】15. Spring Boot核心注解

    Spring Boot核心注解 1 @SpringBootApplication 代表是Spring Boot启动的类 2 @SpringBootConfiguration 通过bean对象来获取配置 ...

  5. SpringBoot学习(三)-->Spring的Java配置方式之读取外部的资源配置文件并配置数据库连接池

    三.读取外部的资源配置文件并配置数据库连接池 1.读取外部的资源配置文件 通过@PropertySource可以指定读取的配置文件,通过@Value注解获取值,具体用法: @Configuration ...

  6. SpringBoot学习(二)-->Spring的Java配置方式

    二.Spring的Java配置方式 Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置. 1.@Configuration 和 @Bean Spring的Java配置方式是通过 @ ...

  7. SpringBoot学习(七)-->SpringBoot在web开发中的配置

    SpringBoot在web开发中的配置 Web开发的自动配置类:在Maven Dependencies-->spring-boot-1.5.2.RELEASE.jar-->org.spr ...

  8. SpringBoot学习(一)-->Spring的发展

    一.Spring的发展 1.Spring1.x 时代 在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和xm ...

  9. spring cloud学习(七)Spring Cloud Config(续)

    Spring Cloud Config(续) 个人参考项目 个人博客 : https://zggdczfr.cn/ 个人参考项目 : (整合到上一个案例中)https://github.com/Fun ...

随机推荐

  1. JavaScrip函数与声明表达式

    首先我们看下函数的两种命名方式 1.函数声明,声明一个函数 function test1(){ var a=0; console.log(a); //左一些操作... } 执行结果如下 我们看一下,无 ...

  2. gdb ../sysdeps/i386/elf/start.S: No such file or directory

    使用 gdb 调试的时候 输入 l 之后出现下列信息 (gdb) l 1 ../sysdeps/i386/elf/start.S: No such file or directory. in ../s ...

  3. Swiftl优秀的特性

    Swift语言在吸收诸多优秀语言如java.c++,Python之后.提供给开发人员大量优秀的特性. 以下我列举一下,swift一些优秀的特性: 1.函数使用经典的圆括号和点调用语法 2.函数标签特性 ...

  4. 【BZOJ】1003 Cards

    [解析]Burnside引理+背包dp+乘法逆元 [Analysis] 这道题卡了好久,就是没想懂置换跟着色是不一样的. 依据burnside引理.在一个置换群作用下不等价类的个数为每一个置换作用下不 ...

  5. memcached 搭建

     linux 下memcached 的搭建 memcached 下载地址:http://www.danga.com/memcached/dist/ libevent 下载地址:http://libev ...

  6. 【BZOJ4966】总统选举 线段树+随机化

    [BZOJ4966]总统选举 Description 黑恶势力的反攻计划被小C成功摧毁,黑恶势力只好投降.秋之国的人民解放了,举国欢庆.此时,原秋之国总统因没能守护好国土,申请辞职,并请秋之国人民的大 ...

  7. EasyPlayerPro(Windows)流媒体播放器开发之框架讲解

    EasyPlayerPro for Windows是基于ffmpeg进行开发的全功能播放器,开发过程中参考了很多开源的播放器,诸如vlc和ffplay等,其中最强大的莫过于vlc,但是鉴于vlc框架过 ...

  8. 我的Android进阶之旅------>Android中MediaButtonReceiver广播监听器的机制分析

    今天看公司的一段关于MediaButtonReceiver的代码看的比较混乱,幸好看了下面的这篇文章,才能茅塞顿开的理解好代码.在此转载下来,以备以后理解,希望都到这篇文章的人也能够有所帮助. 本文转 ...

  9. quick-cocos2d-x 系列之——环境搭建(Mac版)

    quick-cocos2d-x简单介绍 何为quick-cocos2d-x? ?   简单一句话:quick-cocos2d-x是採用lua语言,通过tolua++工具对cocos2d-x进一步封装, ...

  10. js添加方法和邦定事件

    function(obj,objArr){ if(($(obj).attr("type") == "checkbox" && $j(obj).p ...