Skip to content

Commit 49dd089

Browse files
committed
fix: Bean instantiation failed
SequenceCustomizer 类型转换出错
1 parent 08c8d12 commit 49dd089

File tree

6 files changed

+33
-28
lines changed

6 files changed

+33
-28
lines changed

src/test/java/app/myoss/cloud/mybatis/test/integration/h2/H2DataBaseIntTest.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration;
2323
import org.springframework.context.annotation.Configuration;
2424

25-
import app.myoss.cloud.mybatis.table.Sequence;
2625
import lombok.extern.slf4j.Slf4j;
2726

2827
/**
@@ -38,11 +37,4 @@ public class H2DataBaseIntTest {
3837
@Configuration
3938
public static class IntAutoConfig {
4039
}
41-
42-
public static class SequenceCustomizer implements Sequence {
43-
@Override
44-
public Object nextValue(Object parameter) {
45-
return null;
46-
}
47-
}
4840
}

src/test/java/app/myoss/cloud/mybatis/test/integration/h2/test1/UserControllerIntTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
import app.myoss.cloud.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;
5353
import app.myoss.cloud.mybatis.spring.mapper.MapperFactoryBean;
5454
import app.myoss.cloud.mybatis.test.integration.h2.H2DataBaseIntTest.IntAutoConfig;
55-
import app.myoss.cloud.mybatis.test.integration.h2.test1.UserControllerIntTests.MyConfig;
55+
import app.myoss.cloud.mybatis.test.integration.h2.test1.UserControllerIntTests.MyConfig1;
5656
import app.myoss.cloud.mybatis.test.integration.h2.test1.constants.UserStatusEnum;
5757
import app.myoss.cloud.mybatis.test.integration.h2.test1.entity.User;
5858
import app.myoss.cloud.mybatis.test.integration.h2.test1.mapper.UserMapper;
@@ -71,7 +71,7 @@
7171
@Slf4j
7272
@RunWith(SpringRunner.class)
7373
@SpringBootTest(classes = { DataSourceAutoConfiguration.class, IntAutoConfig.class, MybatisAutoConfiguration.class,
74-
MyConfig.class })
74+
MyConfig1.class })
7575
public class UserControllerIntTests {
7676
@Autowired
7777
private UserController userController;
@@ -361,7 +361,7 @@ public void createBatchAndWhereExtraConditionTest1() {
361361
@ComponentScan(basePackageClasses = UserControllerIntTests.class)
362362
@Profile("UserControllerIntTests")
363363
@Configuration
364-
public static class MyConfig {
364+
public static class MyConfig1 {
365365
@Bean
366366
public ParameterHandlerCustomizer persistenceParameterHandler() {
367367
return new ParameterHandlerCustomizer() {

src/test/java/app/myoss/cloud/mybatis/test/integration/h2/test2/UserHistoryControllerIntTests.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
import app.myoss.cloud.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;
5353
import app.myoss.cloud.mybatis.spring.mapper.MapperFactoryBean;
5454
import app.myoss.cloud.mybatis.test.integration.h2.H2DataBaseIntTest.IntAutoConfig;
55-
import app.myoss.cloud.mybatis.test.integration.h2.test2.UserHistoryControllerIntTests.MyConfig;
55+
import app.myoss.cloud.mybatis.test.integration.h2.test2.UserHistoryControllerIntTests.MyConfig2;
5656
import app.myoss.cloud.mybatis.test.integration.h2.test2.constants.AccountStatusEnum;
5757
import app.myoss.cloud.mybatis.test.integration.h2.test2.entity.UserHistory;
5858
import app.myoss.cloud.mybatis.test.integration.h2.test2.service.UserHistoryService;
@@ -70,7 +70,7 @@
7070
@Slf4j
7171
@RunWith(SpringRunner.class)
7272
@SpringBootTest(classes = { DataSourceAutoConfiguration.class, IntAutoConfig.class, MybatisAutoConfiguration.class,
73-
MyConfig.class })
73+
MyConfig2.class })
7474
public class UserHistoryControllerIntTests {
7575
@Autowired
7676
private UserHistoryController userHistoryController;
@@ -292,7 +292,7 @@ public void crudTest2() {
292292
@ComponentScan(basePackageClasses = UserHistoryControllerIntTests.class)
293293
@Profile("UserHistoryControllerIntTests")
294294
@Configuration
295-
public static class MyConfig {
295+
public static class MyConfig2 {
296296
@Bean
297297
public ParameterHandlerCustomizer persistenceParameterHandler() {
298298
return new ParameterHandlerCustomizer() {

src/test/java/app/myoss/cloud/mybatis/test/integration/h2/test3/UserLogControllerIntTests.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@
5252
import app.myoss.cloud.mybatis.repository.entity.AuditIdEntity;
5353
import app.myoss.cloud.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration;
5454
import app.myoss.cloud.mybatis.spring.mapper.MapperFactoryBean;
55+
import app.myoss.cloud.mybatis.table.Sequence;
5556
import app.myoss.cloud.mybatis.test.integration.h2.H2DataBaseIntTest.IntAutoConfig;
56-
import app.myoss.cloud.mybatis.test.integration.h2.H2DataBaseIntTest.SequenceCustomizer;
57-
import app.myoss.cloud.mybatis.test.integration.h2.test3.UserLogControllerIntTests.MyConfig;
57+
import app.myoss.cloud.mybatis.test.integration.h2.test3.UserLogControllerIntTests.MyConfig3;
5858
import app.myoss.cloud.mybatis.test.integration.h2.test3.entity.UserLog;
5959
import app.myoss.cloud.mybatis.test.integration.h2.test3.service.UserLogService;
6060
import app.myoss.cloud.mybatis.test.integration.h2.test3.web.UserLogController;
@@ -71,7 +71,7 @@
7171
@Slf4j
7272
@RunWith(SpringRunner.class)
7373
@SpringBootTest(classes = { DataSourceAutoConfiguration.class, IntAutoConfig.class, MybatisAutoConfiguration.class,
74-
MyConfig.class })
74+
MyConfig3.class })
7575
public class UserLogControllerIntTests {
7676
@Autowired
7777
private UserLogController userLogController;
@@ -283,7 +283,7 @@ public void crudTest2() {
283283
@ComponentScan(basePackageClasses = UserLogControllerIntTests.class)
284284
@Profile("UserLogControllerIntTests")
285285
@Configuration
286-
public static class MyConfig {
286+
public static class MyConfig3 {
287287
@Bean
288288
public ParameterHandlerCustomizer persistenceParameterHandler() {
289289
return new ParameterHandlerCustomizer() {
@@ -319,4 +319,11 @@ public Object nextValue(Object parameter) {
319319
};
320320
}
321321
}
322+
323+
public static class SequenceCustomizer implements Sequence {
324+
@Override
325+
public Object nextValue(Object parameter) {
326+
return null;
327+
}
328+
}
322329
}

src/test/java/app/myoss/cloud/mybatis/test/integration/h2/test3/entity/UserLog.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import app.myoss.cloud.mybatis.table.annotation.SequenceGenerator.Order;
2525
import app.myoss.cloud.mybatis.table.annotation.SequenceKey;
2626
import app.myoss.cloud.mybatis.table.annotation.Table;
27-
import app.myoss.cloud.mybatis.test.integration.h2.H2DataBaseIntTest.SequenceCustomizer;
27+
import app.myoss.cloud.mybatis.test.integration.h2.test3.UserLogControllerIntTests.SequenceCustomizer;
2828
import lombok.Data;
2929
import lombok.EqualsAndHashCode;
3030
import lombok.ToString;

src/test/java/app/myoss/cloud/mybatis/test/integration/h2/test4/SysUserLogControllerIntTests.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import java.util.List;
2525
import java.util.Map;
2626
import java.util.Map.Entry;
27-
import java.util.Optional;
2827
import java.util.stream.Collectors;
2928

3029
import org.assertj.core.api.Assertions;
@@ -37,12 +36,14 @@
3736
import org.springframework.beans.BeanUtils;
3837
import org.springframework.beans.factory.annotation.Autowired;
3938
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
39+
import org.springframework.boot.context.event.ApplicationReadyEvent;
4040
import org.springframework.boot.test.context.SpringBootTest;
4141
import org.springframework.boot.test.system.OutputCaptureRule;
4242
import org.springframework.context.annotation.Bean;
4343
import org.springframework.context.annotation.ComponentScan;
4444
import org.springframework.context.annotation.Configuration;
4545
import org.springframework.context.annotation.Profile;
46+
import org.springframework.context.event.EventListener;
4647
import org.springframework.jdbc.core.JdbcTemplate;
4748
import org.springframework.test.context.ActiveProfiles;
4849
import org.springframework.test.context.junit4.SpringRunner;
@@ -62,7 +63,7 @@
6263
import app.myoss.cloud.mybatis.table.Sequence;
6364
import app.myoss.cloud.mybatis.table.TableMetaObject;
6465
import app.myoss.cloud.mybatis.test.integration.h2.H2DataBaseIntTest.IntAutoConfig;
65-
import app.myoss.cloud.mybatis.test.integration.h2.test4.SysUserLogControllerIntTests.MyConfig;
66+
import app.myoss.cloud.mybatis.test.integration.h2.test4.SysUserLogControllerIntTests.MyConfig4;
6667
import app.myoss.cloud.mybatis.test.integration.h2.test4.entity.SysUserLog;
6768
import app.myoss.cloud.mybatis.test.integration.h2.test4.mapper.SysUserLogMapper;
6869
import app.myoss.cloud.mybatis.test.integration.h2.test4.service.SysUserLogService;
@@ -81,7 +82,7 @@
8182
@Slf4j
8283
@RunWith(SpringRunner.class)
8384
@SpringBootTest(classes = { DataSourceAutoConfiguration.class, IntAutoConfig.class, MybatisAutoConfiguration.class,
84-
MyConfig.class })
85+
MyConfig4.class })
8586
public class SysUserLogControllerIntTests {
8687
@Autowired
8788
private SysUserLogController userLogController;
@@ -591,14 +592,15 @@ public Object nextValue(Object parameter) {
591592
@ComponentScan(basePackageClasses = SysUserLogControllerIntTests.class)
592593
@Profile("SysUserLogControllerIntTests")
593594
@Configuration
594-
public static class MyConfig {
595+
public static class MyConfig4 {
595596
@Bean
596597
public ParameterHandlerCustomizer persistenceParameterHandler() {
597598
return new DefaultParameterHandlerCustomizer();
598599
}
599600

600-
@Bean
601-
public Optional initSequence(JdbcTemplate jdbcTemplate) {
601+
@EventListener
602+
public void initSequence(ApplicationReadyEvent event) {
603+
JdbcTemplate jdbcTemplate = event.getApplicationContext().getBean(JdbcTemplate.class);
602604
Sequence sequenceBean = parameter -> {
603605
Long nextId = jdbcTemplate.queryForObject("select ifnull(max(`id`) ,0) + 1 from t_sys_user_log",
604606
Long.class);
@@ -608,10 +610,14 @@ public Optional initSequence(JdbcTemplate jdbcTemplate) {
608610

609611
Map<String, Sequence> sequenceBeanMap = TableMetaObject.getSequenceBeanMap();
610612
for (Entry<String, Sequence> entry : sequenceBeanMap.entrySet()) {
611-
SequenceCustomizer value = (SequenceCustomizer) entry.getValue();
612-
value.setSequence(sequenceBean);
613+
Sequence entryValue = entry.getValue();
614+
if (entryValue instanceof SequenceCustomizer) {
615+
SequenceCustomizer value = (SequenceCustomizer) entryValue;
616+
value.setSequence(sequenceBean);
617+
} else {
618+
log.warn("entryValue is not instanceof SequenceCustomizer: {}", entryValue);
619+
}
613620
}
614-
return Optional.empty();
615621
}
616622
}
617623
}

0 commit comments

Comments
 (0)