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到本地仓库后即可使用。