# pap-sequence-starter
**Repository Path**: alexgaoyh/pap-sequence-starter
## Basic Information
- **Project Name**: pap-sequence-starter
- **Description**: 号码生成器:流水号生成器:自定义starter
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: v2
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 10
- **Forks**: 1
- **Created**: 2018-05-02
- **Last Updated**: 2022-10-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#20180502
增加号码对象的自定义starter部分
1、 PapSequenceAutoConfiguration 类文件,扫描对应的路径
2、spring.factories 增加对应的启动类部分
3、pom.xml 增加 spring-boot-autoconfigure 部分
#20190305
新创建分支:
考虑将 数据源的配置移除到外部。
使用:(前提:数据源已经在外部被定义)
com.pap
pap-sequence-starter
0.0.1-RELEASE
@Autowired
private ISequenceService sequenceService;
@GetMapping(value = "/seq/{sequenceId}")
public ResponseVO selectInfoById(@RequestHeader(value = "papToken", defaultValue = "-1") String papToken,
@RequestHeader(value = "papVersion", defaultValue = "-1") String papVersion,
@PathVariable("sequenceId") String sequenceId) throws Exception {
return ResponseVO.successdata(sequenceService.selectNextSimpleSequence(sequenceId));
}
#20190307
新创建分支V2:
解决考虑将 sequence 对应的功能完全抽离到一个独有的数据库中,由外部引入项目传递过来数据源进行处理。
解决思路: 针对指定包名下的代码,指定对应的数据源。
使用方法:
1、 外部引入项目 pom.xml 和对应的操作类 增加如上方法;
2、 外部引入项目,将数据源部分进行修改,增加 sequence 部分的数据源配置;
spring.datasource.druid.sequence.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.sequence.url=jdbc:mysql://127.0.0.1:3306/seq?characterEncoding=utf8&useSSL=true&autoReconnect=true&serverTimezone=UTC
spring.datasource.druid.sequence.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.sequence.username=root
spring.datasource.druid.sequence.password=alexgaoyh
3、 由于解决思路是使用类似 多数据源 的方式进行配置
3.1、为了防止数据源重复创建,则启动类部分增加如下隔离
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, MybatisAutoConfiguration.class})
3.2、启动类部分隔离之后,则需要手动创建数据源相关的Bean。 同时如果默认有多个数据源的话,则需要配置到一个优先级,将手动创建的数据源,这些默认部分增加 @Primary 注解,优先找这一部分功能
@Value("${mybatis.mapperLocations}")
private String mapperLocations;
@Primary
@Bean(name = "defaultDataSource")
@ConfigurationProperties("spring.datasource.druid.default")
public DataSource defaultDataSource(){
return DruidDataSourceBuilder.create().build();
}
@Primary
@Bean(name = "defaultTransactionManager")
public DataSourceTransactionManager defaultTransactionManager() throws SQLException {
return new DataSourceTransactionManager(defaultDataSource());
}
@Primary
@Bean(name = "defaultSqlSessionFactory")
public SqlSessionFactory defaultSqlSessionFactory(@Qualifier("defaultDataSource") DataSource defaultDataSource) throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(defaultDataSource);
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources(mapperLocations));
return sessionFactory.getObject();
}