Commit 09d22dd5 by 共享中心代码生成

Merge branch 'dev_2.0.1' into 'master'

Dev 2.0.1

See merge request mall/arch/matrix!64
parents b8a9575f 5d94e707
......@@ -4,6 +4,24 @@ Matrix (矩阵)是一套组件增强套件,包括redis、rocketmq等中间件
# 组件
## V 2.x.x组件
主要进行组件进行
- 升级springboot到2.2.5
- 删除模块:<br>
elasticsearch-starter、 mongodb-starter、monitor-starter、matrix-rocketmq-core
- 新增模块<br>
1. matrix-bigdata封装hbase、spark等针对大数据相关技术组件
1. matrix-bus封装canal等涉及数据总线相关组件
- 调整模块:<br>
1. openfeign-starter->matrix-client-openfeign-starter
1. redis-starter->matrix-datahelper-redis-starter
1. rocketmq-starter->matrix-mq-rocketmq-starter
## V 1.x.x组件
- [common-core](common-core/README.md):提供通用bean,核心注解,定义通用业务异常。
- [common-util](common-util/README.md): 提供BeanUtil,BeanChecker、CollectionUtil等工具类。
......@@ -36,6 +54,8 @@ Matrix (矩阵)是一套组件增强套件,包括redis、rocketmq等中间件
# 示例
- [matrix-sample](http://gitlab.secoo.com:8090/mall/arch/matrix-sample.git)
# 期望
> 欢迎提出[issue](http://gitlab.secoo.com:8090/mall/arch/matrix/issues),帮助完善!
......
......@@ -11,6 +11,7 @@ import java.util.List;
* 此数据源为支持@selectDataSource注解的多数据源使用
*/
@Slf4j
@Deprecated
public class MatrixDynamicDataSource extends AbsDataSource {
@Override
......
......@@ -286,4 +286,5 @@ public abstract class AbstractMessageConverter implements SmartMessageConverter
Object payload, @Nullable MessageHeaders headers, @Nullable Object conversionHint) {
return null;
}
\ No newline at end of file
}
}
\ No newline at end of file
......@@ -17,10 +17,6 @@
<artifactId>mybatis-plus</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-datasource-druid</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
......
......@@ -29,10 +29,6 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>config-starter</artifactId>
</dependency>
</dependencies>
<build>
......
package com.secoo.mall.mybatis.spring.boot.autoconfigure;
import com.secoo.mall.datasource.properties.MatrixDataSourceProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = MatrixDataSourceBootProperties.PREFIX)
public class MatrixDataSourceBootProperties extends MatrixDataSourceProperties {
public static final String PREFIX = MatrixDataSourceProperties.PREFIX + ".default";
}
......@@ -2,13 +2,8 @@ package com.secoo.mall.mybatis.spring.boot.autoconfigure;
import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.ctrip.framework.apollo.spring.boot.ApolloAutoConfiguration;
import com.secoo.mall.datasource.bean.MatrixDataSource;
import com.secoo.mall.datasource.factory.DataSourceFactory;
import com.secoo.mall.datasource.factory.DruidDataSourceFactory;
import com.secoo.mall.datasource.provider.ApolloDruidDataSourceProvider;
import com.secoo.mall.datasource.provider.DataSourceProvider;
import com.secoo.mall.datasource.util.SysUtil;
import com.baomidou.mybatisplus.core.config.GlobalConfig;
;
import com.secoo.mall.mybatis.bean.MatrixMybatisSqlSessionFactoryBean;
import com.secoo.mall.mybatis.config.MatrixMybatisConfiguration;
import com.secoo.mall.mybatis.config.MatrixMybatisGlobalConfig;
......@@ -29,51 +24,33 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import javax.sql.DataSource;
import java.util.Optional;
@Configuration
@EnableConfigurationProperties({MatrixMybatisBootProperties.class})
@ConditionalOnClass(MatrixDataSource.class)
@AutoConfigureBefore({DataSourceAutoConfiguration.class, MybatisPlusAutoConfiguration.class})
@AutoConfigureAfter(ApolloAutoConfiguration.class)
@Slf4j
public class MatrixMybatisAutoConfiguration {
@Setter
private MatrixDataSourceBootProperties matrixDataSourceBootProperties;
@Autowired
@Resource
private MatrixMybatisBootProperties properties;
public MatrixMybatisAutoConfiguration() {
log.info("Init MatrixDataSouceAutoConfiguration");
}
/**
* 如果没有声明,则使用默认的
*
* @return
*/
@Bean
@ConditionalOnMissingBean(DataSource.class)
public DataSource dataSource() {
return new MatrixDataSource("default");
log.info("Init MatrixMybatisAutoConfiguration");
}
@Bean
@ConditionalOnMissingBean(SqlSessionFactory.class)
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
MybatisConfiguration mybatisConfiguration = Optional.ofNullable(properties.getConfiguration()).orElse(matrixMybatisConfig());
MatrixMybatisGlobalConfig globalConfig = Optional.ofNullable(properties.getGlobalConfig()).orElse(matrixMybatisGlobalConfig());
public SqlSessionFactory sqlSessionFactory(DataSource dataSource, MatrixMybatisGlobalConfig globalConfig, MybatisConfiguration mybatisConfiguration) throws Exception {
MatrixMybatisSqlSessionFactoryBean factory = new MatrixMybatisSqlSessionFactoryBean();
String aliasesPackage = Optional.ofNullable(this.properties.getTypeAliasesPackage()).orElse(MatrixMybatisProperties.DEFAULT_ALIAS_PACKAGES);
String[] mapperLocations = Optional.ofNullable(this.properties.getMapperLocations()).orElse(MatrixMybatisProperties.DEFAULT_MAPPER_LOCATIONS);
this.properties.setTypeAliasesPackage(aliasesPackage);
this.properties.setMapperLocations(mapperLocations);
if (this.properties.getConfigurationProperties() != null) {
factory.setConfigurationProperties(this.properties.getConfigurationProperties());
}
if (this.properties.getConfigurationProperties() != null) {
factory.setConfigurationProperties(this.properties.getConfigurationProperties());
......@@ -102,13 +79,16 @@ public class MatrixMybatisAutoConfiguration {
return factory.getObject();
}
public MatrixMybatisGlobalConfig matrixMybatisGlobalConfig() {
@Bean
@ConditionalOnMissingBean(GlobalConfig.class)
public MatrixMybatisGlobalConfig globalConfig() {
MatrixMybatisGlobalConfig globalConfig = new MatrixMybatisGlobalConfig();
return globalConfig;
}
public MatrixMybatisConfiguration matrixMybatisConfig() {
@Bean
@ConditionalOnMissingBean(MybatisConfiguration.class)
public MatrixMybatisConfiguration mybatisConfiguration() {
MatrixMybatisConfiguration config = new MatrixMybatisConfiguration();
return config;
}
......
package com.secoo.mall.mybatis.spring.boot.initializer;
import com.ctrip.framework.apollo.spring.boot.ApolloApplicationContextInitializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.env.ConfigurableEnvironment;
public class MybatisApplicationContextInitializer extends ApolloApplicationContextInitializer {
private static Logger log = LoggerFactory.getLogger(MybatisApplicationContextInitializer.class);
public static String MYBATIS_ENCRYPT_PWD = "mybatis.encryptor.pwd";
public static String MYBATIS_ENCRYPT_SALT = "mybatis.encryptor.salt";
public static String ENCRYPT_FILE_NAME = "encryptor.properties";
@Override
protected void initialize(ConfigurableEnvironment environment) {
super.initialize(environment);
}
// public static Integer ORDER = ApolloApplicationContextInitializer.DEFAULT_ORDER + 100;
/* @Override
public void initialize(ConfigurableApplicationContext context) {
//log.info("initialize.....................");
ConfigurableEnvironment environment = context.getEnvironment();
if (!environment.containsProperty(MYBATIS_ENCRYPT_PWD)) {
Properties properties = new Properties();
//从-D读取
initDConfig(properties);
//从文件加载
initFileConfig(properties);
//解密配置
initApolloConfig(properties);
environment.getPropertySources();
environment.getPropertySources().addFirst((new PropertiesPropertySource("matrixProperties", properties)));
}
}
@Override
public int getOrder() {
return ORDER;
}
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
// log.info("postProcessEnvironment.......");
}
private void initDConfig(Properties properties) {
if (System.getProperty(MYBATIS_ENCRYPT_PWD) != null) {
properties.setProperty(MYBATIS_ENCRYPT_PWD, System.getProperty(MYBATIS_ENCRYPT_PWD));
properties.setProperty(MYBATIS_ENCRYPT_SALT, System.getProperty(MYBATIS_ENCRYPT_SALT));
}
}
private void initFileConfig(Properties properties) {
if(!properties.containsKey(MYBATIS_ENCRYPT_PWD)) {
try {
File file = ResourceUtils.getFile(SystemUtils.USER_HOME + File.separator + ENCRYPT_FILE_NAME);
if (!file.exists()) {
// log.warn(ENCRYPT_FILE_NAME + " not exist");
return;
}
properties.load(new FileInputStream(file));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
*//**
* 解密相关的配置
*//*
private void initApolloConfig(Properties properties){
Config appConfig = ConfigService.getConfig("db.config");
Set<String> propertyNames = appConfig.getPropertyNames();
// log.info(propertyNames.toString());
}*/
}
package com.secoo.mall.mybatis.spring.boot.listener;
import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.ConfigService;
import com.ctrip.framework.apollo.spring.boot.ApolloApplicationContextInitializer;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.SystemUtils;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringApplicationRunListener;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.Ordered;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.PropertiesPropertySource;
import org.springframework.util.ResourceUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
import java.util.Set;
@Slf4j
@NoArgsConstructor
public class MybatisApplicationRunListener implements SpringApplicationRunListener, Ordered {
public static String MYBATIS_ENCRYPT_PWD = "mybats.encryptor.pwd";
public static String MYBATIS_ENCRYPT_SALT = "mybats.encryptor.salt";
public static String ENCRYPT_FILE_NAME = "encryptor.properties";
public static Integer ORDER = ApolloApplicationContextInitializer.DEFAULT_ORDER + 1;
public MybatisApplicationRunListener(SpringApplication application, String[] args) {
}
@Override
public void starting() {
log.info("Appication Starting.....");
}
/**
* 配置加载的依次顺序:
* 1.-spring.config方式加载外部配置
* 2.-D获取
* 3.本地
*
* @param environment
*/
@Override
public void environmentPrepared(ConfigurableEnvironment environment) {
if (!environment.containsProperty(MYBATIS_ENCRYPT_PWD)) {
Properties properties = new Properties();
//从-D读取
initDConfig(properties);
//从文件加载
initFileConfig(properties);
//解密配置
// initApolloConfig(properties);
environment.getPropertySources();
environment.getPropertySources().addFirst((new PropertiesPropertySource("matrixProperties", properties)));
}
}
@Override
public void contextPrepared(ConfigurableApplicationContext context) {
ConfigurableEnvironment environment = context.getEnvironment();
log.info("contextPrepared......");
}
@Override
public void contextLoaded(ConfigurableApplicationContext context) {
}
@Override
public void started(ConfigurableApplicationContext context) {
}
@Override
public void running(ConfigurableApplicationContext context) {
}
@Override
public void failed(ConfigurableApplicationContext context, Throwable exception) {
}
@Override
public int getOrder() {
return ORDER;
}
private void initDConfig(Properties properties) {
if (System.getProperty(MYBATIS_ENCRYPT_PWD) != null) {
properties.setProperty(MYBATIS_ENCRYPT_PWD, System.getProperty(MYBATIS_ENCRYPT_PWD));
properties.setProperty(MYBATIS_ENCRYPT_SALT, System.getProperty(MYBATIS_ENCRYPT_SALT));
}
}
private void initFileConfig(Properties properties) {
if (!properties.containsKey(MYBATIS_ENCRYPT_PWD)) {
try {
File file = ResourceUtils.getFile(SystemUtils.USER_HOME + File.separator + ENCRYPT_FILE_NAME);
if (!file.exists()) {
log.warn(ENCRYPT_FILE_NAME + " not exist");
return;
}
properties.load(new FileInputStream(file));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 解密相关的配置
*/
private void initApolloConfig(Properties properties) {
Config appConfig = ConfigService.getConfig("db.config");
Set<String> propertyNames = appConfig.getPropertyNames();
log.info(propertyNames.toString());
}
}
......@@ -77,6 +77,11 @@
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-mybatis-core</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-mybatis-starter</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment