fix ArrayStoreException during parsing annotations (#519)
* Avoid using @ConditionalOnClass with @Bean
This commit is contained in:
parent
0f6d587d7f
commit
839cf3ce6f
@ -27,11 +27,9 @@ import com.baomidou.dynamic.datasource.creator.hikaricp.HikariDataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.creator.jndi.JndiDataSourceCreator;
|
||||
import com.baomidou.dynamic.datasource.tx.AtomikosTransactionFactory;
|
||||
import com.zaxxer.hikari.HikariDataSource;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.dbcp2.BasicDataSource;
|
||||
import org.apache.ibatis.transaction.TransactionFactory;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.annotation.Order;
|
||||
@ -40,8 +38,6 @@ import org.springframework.core.annotation.Order;
|
||||
* @author TaoYu
|
||||
*/
|
||||
@Configuration
|
||||
@RequiredArgsConstructor
|
||||
@EnableConfigurationProperties(DynamicDataSourceProperties.class)
|
||||
public class DynamicDataSourceCreatorAutoConfiguration {
|
||||
|
||||
public static final int JNDI_ORDER = 1000;
|
||||
@ -51,7 +47,6 @@ public class DynamicDataSourceCreatorAutoConfiguration {
|
||||
public static final int DBCP2_ORDER = 5000;
|
||||
public static final int ATOMIKOS_ORDER = 6000;
|
||||
public static final int DEFAULT_ORDER = 7000;
|
||||
private final DynamicDataSourceProperties properties;
|
||||
|
||||
@Bean
|
||||
@Order(DEFAULT_ORDER)
|
||||
@ -68,58 +63,76 @@ public class DynamicDataSourceCreatorAutoConfiguration {
|
||||
/**
|
||||
* 存在Druid数据源时, 加入创建器
|
||||
*/
|
||||
|
||||
@Bean
|
||||
@Order(DRUID_ORDER)
|
||||
@ConditionalOnClass(DruidDataSource.class)
|
||||
public DruidDataSourceCreator druidDataSourceCreator() {
|
||||
return new DruidDataSourceCreator(properties.getDruid());
|
||||
@Configuration
|
||||
static class DruidDataSourceCreatorConfiguration {
|
||||
|
||||
@Bean
|
||||
@Order(DRUID_ORDER)
|
||||
public DruidDataSourceCreator druidDataSourceCreator(DynamicDataSourceProperties properties) {
|
||||
return new DruidDataSourceCreator(properties.getDruid());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 存在Hikari数据源时, 加入创建器
|
||||
*/
|
||||
@Bean
|
||||
@Order(HIKARI_ORDER)
|
||||
@ConditionalOnClass(HikariDataSource.class)
|
||||
public HikariDataSourceCreator hikariDataSourceCreator() {
|
||||
return new HikariDataSourceCreator(properties.getHikari());
|
||||
@Configuration
|
||||
static class HikariDataSourceCreatorConfiguration {
|
||||
@Bean
|
||||
@Order(HIKARI_ORDER)
|
||||
public HikariDataSourceCreator hikariDataSourceCreator(DynamicDataSourceProperties properties) {
|
||||
return new HikariDataSourceCreator(properties.getHikari());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 存在BeeCp数据源时, 加入创建器
|
||||
*/
|
||||
@Bean
|
||||
@Order(BEECP_ORDER)
|
||||
@ConditionalOnClass(BeeDataSource.class)
|
||||
public BeeCpDataSourceCreator beeCpDataSourceCreator() {
|
||||
return new BeeCpDataSourceCreator(properties.getBeecp());
|
||||
@Configuration
|
||||
static class BeeCpDataSourceCreatorConfiguration {
|
||||
|
||||
@Bean
|
||||
@Order(BEECP_ORDER)
|
||||
public BeeCpDataSourceCreator beeCpDataSourceCreator(DynamicDataSourceProperties properties) {
|
||||
return new BeeCpDataSourceCreator(properties.getBeecp());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 存在Dbcp2数据源时, 加入创建器
|
||||
*/
|
||||
@Bean
|
||||
@Order(DBCP2_ORDER)
|
||||
@ConditionalOnClass(BasicDataSource.class)
|
||||
public Dbcp2DataSourceCreator dbcp2DataSourceCreator() {
|
||||
return new Dbcp2DataSourceCreator(properties.getDbcp2());
|
||||
@Configuration
|
||||
static class Dbcp2DataSourceCreatorConfiguration {
|
||||
|
||||
@Bean
|
||||
@Order(DBCP2_ORDER)
|
||||
public Dbcp2DataSourceCreator dbcp2DataSourceCreator(DynamicDataSourceProperties properties) {
|
||||
return new Dbcp2DataSourceCreator(properties.getDbcp2());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 存在Atomikos数据源时, 加入创建器
|
||||
*/
|
||||
@Bean
|
||||
@Order(ATOMIKOS_ORDER)
|
||||
@ConditionalOnClass({AtomikosDataSourceBean.class})
|
||||
public AtomikosDataSourceCreator atomikosDataSourceCreator() {
|
||||
return new AtomikosDataSourceCreator(properties.getAtomikos());
|
||||
}
|
||||
@ConditionalOnClass(AtomikosDataSourceBean.class)
|
||||
@Configuration
|
||||
static class AtomikosDataSourceCreatorConfiguration {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnClass({AtomikosDataSourceBean.class, TransactionFactory.class})
|
||||
public TransactionFactory atomikosTransactionFactory() {
|
||||
return new AtomikosTransactionFactory();
|
||||
@Bean
|
||||
@Order(ATOMIKOS_ORDER)
|
||||
public AtomikosDataSourceCreator atomikosDataSourceCreator(DynamicDataSourceProperties properties) {
|
||||
return new AtomikosDataSourceCreator(properties.getAtomikos());
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnClass(TransactionFactory.class)
|
||||
public TransactionFactory atomikosTransactionFactory() {
|
||||
return new AtomikosTransactionFactory();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user