Commit e35dde1207243f384dc3ff5f818a3e1c55459e37
1 parent
90e49664
项目结构调整 x 4
Showing
7 changed files
with
74 additions
and
8 deletions
yudao-admin-server/pom.xml
| ... | ... | @@ -16,14 +16,62 @@ |
| 16 | 16 | |
| 17 | 17 | <properties> |
| 18 | 18 | <revision>1.0.0</revision> |
| 19 | + <spring.boot.version>2.4.4</spring.boot.version> | |
| 19 | 20 | </properties> |
| 20 | 21 | |
| 22 | + <!-- 依赖声明 --> | |
| 23 | + <dependencyManagement> | |
| 24 | + <dependencies> | |
| 25 | + <!-- 统一依赖管理 --> | |
| 26 | + <dependency> | |
| 27 | + <groupId>org.springframework.boot</groupId> | |
| 28 | + <artifactId>spring-boot-dependencies</artifactId> | |
| 29 | + <version>${spring.boot.version}</version> | |
| 30 | + <type>pom</type> | |
| 31 | + <scope>import</scope> | |
| 32 | + </dependency> | |
| 33 | + </dependencies> | |
| 34 | + </dependencyManagement> | |
| 35 | + | |
| 21 | 36 | <dependencies> |
| 22 | 37 | <dependency> |
| 23 | 38 | <groupId>cn.iocoder.boot</groupId> |
| 24 | 39 | <artifactId>yudao-framework</artifactId> |
| 25 | 40 | <version>${revision}</version> |
| 26 | 41 | </dependency> |
| 42 | + | |
| 43 | + <dependency> | |
| 44 | + <groupId>org.springframework.boot</groupId> | |
| 45 | + <artifactId>spring-boot-starter-test</artifactId> | |
| 46 | + <version>2.4.4</version> <!-- TODO bom 调整 --> | |
| 47 | + <scope>test</scope> | |
| 48 | + <exclusions> | |
| 49 | + <exclusion> | |
| 50 | + <artifactId>asm</artifactId> | |
| 51 | + <groupId>org.ow2.asm</groupId> | |
| 52 | + </exclusion> | |
| 53 | + </exclusions> | |
| 54 | + </dependency> | |
| 55 | + | |
| 56 | + <dependency> | |
| 57 | + <groupId>com.h2database</groupId> <!-- 单元测试,我们采用 H2 作为数据库 --> | |
| 58 | + <artifactId>h2</artifactId> | |
| 59 | + <scope>test</scope> <!-- TODO bom 调整 --> | |
| 60 | + </dependency> | |
| 61 | + | |
| 62 | + <dependency> | |
| 63 | + <groupId>com.github.fppt</groupId> <!-- 单元测试,我们采用内嵌的 Redis 数据库 --> | |
| 64 | + <artifactId>jedis-mock</artifactId> | |
| 65 | + <version>0.1.16</version> <!-- TODO bom 调整 --> | |
| 66 | + <scope>test</scope> | |
| 67 | + </dependency> | |
| 68 | + | |
| 69 | + <dependency> | |
| 70 | + <groupId>uk.co.jemos.podam</groupId> <!-- 单元测试,随机生成 POJO 类 --> | |
| 71 | + <artifactId>podam</artifactId> | |
| 72 | + <version>7.2.6.RELEASE</version> <!-- TODO bom 调整 --> | |
| 73 | + <scope>test</scope> | |
| 74 | + </dependency> | |
| 27 | 75 | </dependencies> |
| 28 | 76 | |
| 29 | 77 | <!-- TODO 稍后清理掉 --> | ... | ... |
yudao-admin-server/src/main/java/cn/iocoder/dashboard/modules/system/service/dict/impl/SysDictDataServiceImpl.java
| ... | ... | @@ -250,7 +250,7 @@ public class SysDictDataServiceImpl implements SysDictDataService { |
| 250 | 250 | |
| 251 | 251 | @Override |
| 252 | 252 | public List<DictDataRespDTO> listDictDatasFromCache(String type) { |
| 253 | - return SysDictDataConvert.INSTANCE.convertList03(labelDictDataCache.row(type).values())); | |
| 253 | + return SysDictDataConvert.INSTANCE.convertList03(labelDictDataCache.row(type).values()); | |
| 254 | 254 | } |
| 255 | 255 | |
| 256 | 256 | } | ... | ... |
yudao-admin-server/src/main/resources/application-dev.yaml
| ... | ... | @@ -99,6 +99,7 @@ apollo: |
| 99 | 99 | eagerLoad: |
| 100 | 100 | enabled: true # 设置 Apollo 在日志初始化前生效,可以实现日志的动态级别配置 |
| 101 | 101 | jdbc: # 自定义的 JDBC 配置项,用于数据库的地址 |
| 102 | + dao: cn.iocoder.dashboard.modules.infra.dal.mysql.config.InfConfigDAOImpl | |
| 102 | 103 | url: ${spring.datasource.dynamic.datasource.master.url} |
| 103 | 104 | username: ${spring.datasource.dynamic.datasource.master.username} |
| 104 | 105 | password: ${spring.datasource.dynamic.datasource.master.password} | ... | ... |
yudao-admin-server/src/main/resources/application-local.yaml
| ... | ... | @@ -99,6 +99,7 @@ apollo: |
| 99 | 99 | eagerLoad: |
| 100 | 100 | enabled: true # 设置 Apollo 在日志初始化前生效,可以实现日志的动态级别配置 |
| 101 | 101 | jdbc: # 自定义的 JDBC 配置项,用于数据库的地址 |
| 102 | + dao: cn.iocoder.dashboard.modules.infra.dal.mysql.config.InfConfigDAOImpl | |
| 102 | 103 | url: ${spring.datasource.dynamic.datasource.master.url} |
| 103 | 104 | username: ${spring.datasource.dynamic.datasource.master.username} |
| 104 | 105 | password: ${spring.datasource.dynamic.datasource.master.password} | ... | ... |
yudao-admin-server/src/test/java/cn/iocoder/dashboard/modules/system/service/auth/SysAuthServiceImplTest.java
| ... | ... | @@ -66,7 +66,7 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest { |
| 66 | 66 | // 准备参数 |
| 67 | 67 | String username = randomString(); |
| 68 | 68 | // mock 方法 |
| 69 | - SysUserDO user = randomUserDO(o -> o.setUsername(username)); | |
| 69 | + SysUserDO user = randomPojo(SysUserDO.class, o -> o.setUsername(username)); | |
| 70 | 70 | when(userService.getUserByUsername(eq(username))).thenReturn(user); |
| 71 | 71 | |
| 72 | 72 | // 调用 |
| ... | ... | @@ -93,7 +93,7 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest { |
| 93 | 93 | // 准备参数 |
| 94 | 94 | Long userId = randomLongId(); |
| 95 | 95 | // mock 方法 01 |
| 96 | - SysUserDO user = randomUserDO(o -> o.setId(userId)); | |
| 96 | + SysUserDO user = randomPojo(SysUserDO.class, o -> o.setId(userId)); | |
| 97 | 97 | when(userService.getUser(eq(userId))).thenReturn(user); |
| 98 | 98 | // mock 方法 02 |
| 99 | 99 | Set<Long> roleIds = randomSet(Long.class); | ... | ... |
yudao-framework/src/main/java/cn/iocoder/dashboard/framework/apollo/internals/DBConfigRepository.java
| 1 | 1 | package cn.iocoder.dashboard.framework.apollo.internals; |
| 2 | 2 | |
| 3 | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | +import cn.hutool.core.util.ClassUtil; | |
| 5 | +import cn.hutool.core.util.ObjectUtil; | |
| 6 | +import cn.hutool.core.util.ReflectUtil; | |
| 4 | 7 | import cn.iocoder.dashboard.framework.apollo.core.ConfigConsts; |
| 5 | 8 | import cn.iocoder.dashboard.framework.apollo.internals.dto.ConfigRespDTO; |
| 6 | 9 | import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; |
| 10 | +import cn.iocoder.dashboard.util.object.ObjectUtils; | |
| 7 | 11 | import com.ctrip.framework.apollo.Apollo; |
| 8 | 12 | import com.ctrip.framework.apollo.build.ApolloInjector; |
| 9 | 13 | import com.ctrip.framework.apollo.core.utils.ApolloThreadFactory; |
| ... | ... | @@ -13,8 +17,10 @@ import com.ctrip.framework.apollo.internals.ConfigRepository; |
| 13 | 17 | import com.ctrip.framework.apollo.tracer.Tracer; |
| 14 | 18 | import com.ctrip.framework.apollo.util.ConfigUtil; |
| 15 | 19 | import com.ctrip.framework.apollo.util.factory.PropertiesFactory; |
| 20 | +import lombok.SneakyThrows; | |
| 16 | 21 | import lombok.extern.slf4j.Slf4j; |
| 17 | 22 | |
| 23 | +import java.lang.reflect.Constructor; | |
| 18 | 24 | import java.util.Comparator; |
| 19 | 25 | import java.util.Date; |
| 20 | 26 | import java.util.List; |
| ... | ... | @@ -58,9 +64,7 @@ public class DBConfigRepository extends AbstractConfigRepository { |
| 58 | 64 | this.propertiesFactory = ApolloInjector.getInstance(PropertiesFactory.class); |
| 59 | 65 | this.m_configUtil = ApolloInjector.getInstance(ConfigUtil.class); |
| 60 | 66 | // 初始化 DB |
| 61 | - cn.iocoder.dashboard.modules.infra.dal.mysql.config | |
| 62 | - this.configFrameworkDAO = new InfConfigDAOImpl(System.getProperty(ConfigConsts.APOLLO_JDBC_URL), | |
| 63 | - System.getProperty(ConfigConsts.APOLLO_JDBC_USERNAME), System.getProperty(ConfigConsts.APOLLO_JDBC_PASSWORD)); | |
| 67 | + this.configFrameworkDAO = createConfigFrameworkDAO(); | |
| 64 | 68 | |
| 65 | 69 | // 初始化加载 |
| 66 | 70 | this.trySync(); |
| ... | ... | @@ -71,6 +75,18 @@ public class DBConfigRepository extends AbstractConfigRepository { |
| 71 | 75 | INSTANCE = this; |
| 72 | 76 | } |
| 73 | 77 | |
| 78 | + @SneakyThrows | |
| 79 | + private static ConfigFrameworkDAO createConfigFrameworkDAO() { | |
| 80 | + String dao = System.getProperty(ConfigConsts.APOLLO_JDBC_DAO); | |
| 81 | + String url = System.getProperty(ConfigConsts.APOLLO_JDBC_URL); | |
| 82 | + String username = System.getProperty(ConfigConsts.APOLLO_JDBC_USERNAME); | |
| 83 | + String password = System.getProperty(ConfigConsts.APOLLO_JDBC_PASSWORD); | |
| 84 | + // 创建 DBConfigRepository 对象 | |
| 85 | + Class<? extends ConfigFrameworkDAO> clazz = ClassUtil.loadClass(dao); | |
| 86 | + Constructor<? extends ConfigFrameworkDAO> constructor = ReflectUtil.getConstructor(clazz, String.class, String.class, String.class); | |
| 87 | + return constructor.newInstance(url, username, password); | |
| 88 | + } | |
| 89 | + | |
| 74 | 90 | /** |
| 75 | 91 | * 通知同步, |
| 76 | 92 | */ | ... | ... |
yudao-framework/src/main/java/cn/iocoder/dashboard/framework/apollo/spring/boot/ApolloApplicationContextInitializer.java
| ... | ... | @@ -23,8 +23,8 @@ public class ApolloApplicationContextInitializer implements EnvironmentPostProce |
| 23 | 23 | |
| 24 | 24 | private int order = DEFAULT_ORDER; |
| 25 | 25 | |
| 26 | - private static final String[] APOLLO_SYSTEM_PROPERTIES = {ConfigConsts.APOLLO_JDBC_URL, | |
| 27 | - ConfigConsts.APOLLO_JDBC_USERNAME, ConfigConsts.APOLLO_JDBC_PASSWORD}; | |
| 26 | + private static final String[] APOLLO_SYSTEM_PROPERTIES = {ConfigConsts.APOLLO_JDBC_DAO, | |
| 27 | + ConfigConsts.APOLLO_JDBC_URL, ConfigConsts.APOLLO_JDBC_USERNAME, ConfigConsts.APOLLO_JDBC_PASSWORD}; | |
| 28 | 28 | |
| 29 | 29 | @Override |
| 30 | 30 | public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { | ... | ... |