SpringBoot-Starter
基于前面开发好的模块,创建SpringBoot-Starter进行整合,通过Spring-Boot的加载机制进行分布式事物组件DT的自动装配,便于使用。
pom文件:
在项目的pom文件中定义之前开发过程中需要使用的模块,以及使用的相关依赖。
自动装配类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| * @author kris */ @Configuration @ConditionalOnProperty(prefix = "dt", name = "enable", havingValue = "true") @EnableConfigurationProperties(DistributedTransactionProperties.class) public class DistributedTransactionConfiguration { @Resource private DistributedTransactionProperties distributedTransactionProperties; @Bean public TransactionManager dtTransactionManager() { return new TransactionManagerImpl(); } @Bean public ResourceManager dtResourceManager() { return new ResourceManagerImpl(); } ... ... }
|
创建一个带@Configuration
注解的自动装配类 DistributedTransactionConfiguration
,通过@ConditionalOnProperty
注解添加启动条件,根据有没有配置符合要求的属性来决定是否启动该自动装配类。然后通过@Bean
将待初始化的类进行初始化配置。
配置类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| * @author kris */ @Data @Configuration @ConfigurationProperties(prefix = "dt") public class DistributedTransactionProperties { * 分布式事务是否启动 */ private boolean enable = false; * 分布式事务名称 */ private String name; * 分布式任务超时时间,默认30S */ private long timeoutTime = 30; }
|
通过@EnableConfigurationProperties(DistributedTransactionProperties.class)
将配置加载入DistributedTransactionProperties
配置类的属性里,通过@ConfigurationProperties(prefix = "dt")
设置对应配置文件里配置的前缀。
加载文件:
在resources/META-INF
目录下的spring.factories
文件中配置如下:
1 2
| org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ cn.blogxin.dt.client.spring.DistributedTransactionConfiguration
|
至此,整个Starter开发完毕,Deploy到中央仓库或Install到本地仓库后即可使用。