Skip to content

Commit f0d74d0

Browse files
committed
add generateId
1 parent 8f7bea4 commit f0d74d0

File tree

9 files changed

+49
-27
lines changed

9 files changed

+49
-27
lines changed

leaf-demo/src/main/java/com/example/demo/DemoApplication.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
* @author lorne
99
* @since 1.0.0
1010
*/
11-
@SpringBootApplication
1211
@LeafScanner
12+
@SpringBootApplication
1313
public class DemoApplication {
1414

1515
public static void main(String[] args) {
Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.example.demo.domain;
22

3-
import com.codingapi.leaf.framework.LeafUtils;
3+
import com.codingapi.leaf.framework.LeafIdGenerate;
44
import lombok.Getter;
55
import lombok.Setter;
66

@@ -10,19 +10,14 @@
1010
*/
1111
@Setter
1212
@Getter
13-
public class Demo {
13+
public class Demo implements LeafIdGenerate {
1414

1515
private long id;
1616

1717
private String name;
1818

19-
2019
public Demo() {
21-
this.generatedId();
20+
id = generateId();
2221
}
2322

24-
25-
private void generatedId(){
26-
this.id = LeafUtils.getInstance().generateId(Demo.class);
27-
}
2823
}
Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.example.demo.domain;
22

3-
import com.codingapi.leaf.framework.LeafUtils;
3+
import com.codingapi.leaf.framework.LeafIdGenerate;
44
import lombok.Getter;
55
import lombok.Setter;
66

@@ -10,19 +10,14 @@
1010
*/
1111
@Setter
1212
@Getter
13-
public class Example {
13+
public class Example implements LeafIdGenerate {
1414

1515
private long id;
1616

1717
private String name;
1818

19-
2019
public Example() {
21-
this.generatedId();
20+
id = generateId();
2221
}
2322

24-
25-
private void generatedId(){
26-
this.id = LeafUtils.getInstance().generateId(Example.class);
27-
}
2823
}

leaf-demo/src/test/java/com/example/demo/domain/DemoTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import org.junit.jupiter.api.Test;
55
import org.springframework.boot.test.context.SpringBootTest;
66

7-
import static org.junit.jupiter.api.Assertions.*;
7+
import static org.junit.jupiter.api.Assertions.assertTrue;
88

99
/**
1010
* @author lorne

leaf-server/src/main/resources/application.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ spring.freemarker.template-loader-path=classpath:/templates/
99
spring.freemarker.suffix=.ftl
1010

1111
leaf.segment.enable=true
12-
spring.datasource.jdbc-url=jdbc:mysql://127.0.0.1:3306/leaf
12+
spring.datasource.jdbc-url=jdbc:mysql://127.0.0.1:3306/leaf?serverTimezone=Asia/Shanghai
1313
spring.datasource.username=root
1414
spring.datasource.password=12345678
1515
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

springboot-starter-leaf/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@
1818

1919
<dependencies>
2020

21+
<dependency>
22+
<groupId>org.reflections</groupId>
23+
<artifactId>reflections</artifactId>
24+
<version>0.10.2</version>
25+
</dependency>
26+
2127
<dependency>
2228
<groupId>org.springframework</groupId>
2329
<artifactId>spring-web</artifactId>
Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,44 @@
11
package com.codingapi.leaf.framework;
22

33
import lombok.extern.slf4j.Slf4j;
4+
import org.reflections.Reflections;
5+
import org.reflections.scanners.Scanners;
6+
import org.reflections.util.ConfigurationBuilder;
47
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
5-
import org.springframework.context.annotation.Configuration;
68
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
79
import org.springframework.core.type.AnnotationMetadata;
810

11+
import java.util.*;
12+
913
@Slf4j
10-
@Configuration
1114
public class AutoConfigurationImportSelector implements ImportBeanDefinitionRegistrar {
1215

16+
private Set<Class<? extends LeafIdGenerate>> classes;
17+
1318
@Override
1419
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
15-
log.info("importingClassMetadata:{}",importingClassMetadata);
20+
String className = importingClassMetadata.getClassName();
21+
List<String> packageNames = new ArrayList<>();
22+
try {
23+
packageNames.add(Class.forName(className).getPackage().getName());
24+
25+
Map<String,Object> annotations = importingClassMetadata.getAnnotationAttributes(LeafScanner.class.getName());
26+
assert annotations != null;
27+
String[] packages = (String[])annotations.get("scanBasePackages");
28+
packageNames.addAll(Arrays.asList(packages));
29+
30+
} catch (Exception e) {
31+
throw new RuntimeException(e);
32+
}
33+
34+
Reflections reflections = new Reflections(new ConfigurationBuilder()
35+
.forPackages(packageNames.toArray(new String[]{}))
36+
.addScanners(Scanners.TypesAnnotated,Scanners.SubTypes));
37+
38+
this.classes = reflections.getSubTypesOf(LeafIdGenerate.class);
39+
log.debug("classes:{}",classes);
1640

17-
//todo scanner classes
18-
LeafUtils.getInstance().initClass(null);
41+
LeafUtils.getInstance().setClasses(classes);
1942
}
2043

2144
}

springboot-starter-leaf/src/main/java/com/codingapi/leaf/framework/LeafIdGenerate.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
public interface LeafIdGenerate {
44

55
default long generateId(){
6-
Class<?> clazz = getClass();
7-
return LeafUtils.getInstance().generateId(clazz);
6+
return LeafUtils.getInstance().generateId(getClass());
87
}
98
}

springboot-starter-leaf/src/main/java/com/codingapi/leaf/framework/LeafUtils.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.codingapi.leaf.framework;
22

3+
import lombok.Setter;
34
import lombok.extern.slf4j.Slf4j;
45

56
import java.util.Set;
@@ -13,6 +14,8 @@ public class LeafUtils {
1314

1415
private LeafClient leafClient;
1516
private String type;
17+
@Setter
18+
private Set<Class<? extends LeafIdGenerate>> classes;
1619

1720
private LeafUtils(){
1821
}
@@ -33,6 +36,7 @@ public static LeafUtils getInstance() {
3336
protected void setLeafClient(LeafClient leafClient){
3437
this.leafClient = leafClient;
3538
this.type = leafClient.type();
39+
this.initClass();
3640
}
3741

3842
boolean isSegment(){
@@ -76,7 +80,7 @@ boolean push(String key,int step,int maxId){
7680
}
7781

7882

79-
void initClass(Set<Class> classes){
83+
private void initClass(){
8084
if(LeafUtils.getInstance().isSegment()) {
8185
if(classes!=null&&classes.size()>0) {
8286
for (Class<?> clazz : classes) {

0 commit comments

Comments
 (0)