1
0

优化spring boot自动配置,增加manager初始化方法

This commit is contained in:
2025-01-06 10:32:54 +08:00
parent 82af04a4c6
commit 465cc8cd3f
3 changed files with 29 additions and 5 deletions

View File

@@ -6,11 +6,14 @@ import com.lanyuanxiaoyao.flowable.core.repository.FlowableRepository;
import com.lanyuanxiaoyao.flowable.jpa.repository.FlowableHistoryRepository;
import com.lanyuanxiaoyao.flowable.jpa.repository.FlowableInstanceRepository;
import com.lanyuanxiaoyao.flowable.jpa.repository.FlowableNodeRepository;
import org.springframework.beans.factory.annotation.Qualifier;
import java.util.Map;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
/**
* 自动配置
@@ -19,9 +22,12 @@ import org.springframework.context.annotation.Configuration;
* @version 20250103
*/
@Configuration
@EnableJpaRepositories("com.lanyuanxiaoyao.flowable.jpa.repository")
@EnableConfigurationProperties(SpringFlowableConfiguration.class)
public class SpringFlowableAutoConfiguration {
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
@Bean
@ConditionalOnMissingBean(FlowableRepository.class)
public FlowableRepository flowableRepository(
FlowableNodeRepository flowableNodeRepository,
FlowableInstanceRepository flowableInstanceRepository,
@@ -31,11 +37,20 @@ public class SpringFlowableAutoConfiguration {
}
@Bean
@ConditionalOnBean(FlowableRepository.class)
@ConditionalOnMissingBean(FlowableManager.class)
public FlowableManager flowableManager(
@Qualifier("springFlowableConfiguration") FlowableConfiguration configuration,
FlowableConfiguration configuration,
FlowableRepository repository,
ApplicationContext applicationContext
) {
return new SpringFlowableManager(configuration, repository, applicationContext);
FlowableManager manager = new SpringFlowableManager(configuration, repository, applicationContext);
Map<String, SpringFlowableManagerInitializer> initializerMap = applicationContext.getBeansOfType(SpringFlowableManagerInitializer.class);
for (SpringFlowableManagerInitializer initializer : initializerMap.values()) {
manager = initializer.initial(manager);
}
return manager;
}
}

View File

@@ -3,7 +3,6 @@ package com.lanyuanxiaoyao.flowable.jpa;
import com.lanyuanxiaoyao.flowable.core.manager.FlowableConfiguration;
import lombok.ToString;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
* 配置类
@@ -12,7 +11,6 @@ import org.springframework.context.annotation.Configuration;
* @version 20250103
*/
@ToString(callSuper = true)
@Configuration
@ConfigurationProperties("flowable")
public class SpringFlowableConfiguration extends FlowableConfiguration {
}

View File

@@ -0,0 +1,11 @@
package com.lanyuanxiaoyao.flowable.jpa;
import com.lanyuanxiaoyao.flowable.core.manager.FlowableManager;
/**
* @author lanyuanxiaoyao
* @version 20250106
*/
public interface SpringFlowableManagerInitializer {
FlowableManager initial(FlowableManager manager);
}