初次提交

This commit is contained in:
杨黄林
2022-02-01 12:02:35 +08:00
parent 5218c2fd97
commit 1b4970e8ec
8 changed files with 259 additions and 2 deletions

View File

@@ -0,0 +1,12 @@
package com.yang.springseq;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringSeqApplication {
public static void main(String[] args) {
SpringApplication.run(SpringSeqApplication.class, args);
}
}

View File

@@ -0,0 +1,44 @@
package com.yang.springseq.config;
import com.cdhncy.seq.config.GeneratorConfig;
import com.cdhncy.seq.config.TableConfig;
import com.cdhncy.seq.generator.Generator;
import com.cdhncy.seq.generator.impl.SequencesGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.transaction.support.TransactionTemplate;
import javax.annotation.Resource;
@Configuration
public class SeqGeneratorConfig {
@Resource
private JdbcTemplate jdbcTemplate;
@Resource
private TransactionTemplate transactionTemplate;
@Bean
public TableConfig tableConfig() {
TableConfig tableConfig = new TableConfig();
// tableConfig.setTable("sequences");
// tableConfig.setKeyColumn("SEQUENCE_KEY");
// tableConfig.setTypeColumn("SEQUENCE_TYPE");
// tableConfig.setSeqColumn("SEQUENCE_NEXT_ID");
return tableConfig;
}
@Bean
public GeneratorConfig generatorConfig(TableConfig tableConfig) {
GeneratorConfig generatorConfig = new GeneratorConfig();
generatorConfig.setJdbcTemplate(jdbcTemplate);
generatorConfig.setTransactionTemplate(transactionTemplate);
generatorConfig.setTableConfig(tableConfig);
return generatorConfig;
}
@Bean
public Generator generator(GeneratorConfig generatorConfig) {
return new SequencesGenerator(generatorConfig);
}
}

View File

@@ -0,0 +1,45 @@
package com.yang.springseq.config;
import com.cdhncy.seq.generator.Generator;
import com.cdhncy.seq.po.Sequences;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@Component
public class Startup implements ApplicationRunner {
@Resource
private Generator generator;
@Override
public void run(ApplicationArguments args) {
//释放未锁定序列号
generator.release();
Set<String> set = new HashSet<>();
//开启多线程进行测试
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(10, 10, 1, TimeUnit.MINUTES, new ArrayBlockingQueue<>(100));
for (int i = 0; i < 5; i++) {
threadPoolExecutor.execute(() -> {
Sequences sequences = generator.generate("SNT", "MISSION");
String formattedSeq = generator.format(sequences.getSeq(), 5, "处〔#year#10801#seq#");
generator.lock(sequences);
set.add(formattedSeq);
System.out.println(formattedSeq);
});
}
threadPoolExecutor.shutdown();
while (true) {
if (threadPoolExecutor.isTerminated())
break;
}
System.out.println(set.size());
}
}