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.FlowableHistoryRepository;
import com.lanyuanxiaoyao.flowable.jpa.repository.FlowableInstanceRepository; import com.lanyuanxiaoyao.flowable.jpa.repository.FlowableInstanceRepository;
import com.lanyuanxiaoyao.flowable.jpa.repository.FlowableNodeRepository; 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.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; 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 * @version 20250103
*/ */
@Configuration @Configuration
@EnableJpaRepositories("com.lanyuanxiaoyao.flowable.jpa.repository")
@EnableConfigurationProperties(SpringFlowableConfiguration.class) @EnableConfigurationProperties(SpringFlowableConfiguration.class)
public class SpringFlowableAutoConfiguration { public class SpringFlowableAutoConfiguration {
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
@Bean @Bean
@ConditionalOnMissingBean(FlowableRepository.class)
public FlowableRepository flowableRepository( public FlowableRepository flowableRepository(
FlowableNodeRepository flowableNodeRepository, FlowableNodeRepository flowableNodeRepository,
FlowableInstanceRepository flowableInstanceRepository, FlowableInstanceRepository flowableInstanceRepository,
@@ -31,11 +37,20 @@ public class SpringFlowableAutoConfiguration {
} }
@Bean @Bean
@ConditionalOnBean(FlowableRepository.class)
@ConditionalOnMissingBean(FlowableManager.class)
public FlowableManager flowableManager( public FlowableManager flowableManager(
@Qualifier("springFlowableConfiguration") FlowableConfiguration configuration, FlowableConfiguration configuration,
FlowableRepository repository, FlowableRepository repository,
ApplicationContext applicationContext 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 com.lanyuanxiaoyao.flowable.core.manager.FlowableConfiguration;
import lombok.ToString; import lombok.ToString;
import org.springframework.boot.context.properties.ConfigurationProperties; 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 * @version 20250103
*/ */
@ToString(callSuper = true) @ToString(callSuper = true)
@Configuration
@ConfigurationProperties("flowable") @ConfigurationProperties("flowable")
public class SpringFlowableConfiguration extends FlowableConfiguration { 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);
}