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,14 +16,62 @@ | ||
| 16 | 16 | ||
| 17 | <properties> | 17 | <properties> |
| 18 | <revision>1.0.0</revision> | 18 | <revision>1.0.0</revision> |
| 19 | + <spring.boot.version>2.4.4</spring.boot.version> | ||
| 19 | </properties> | 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 | <dependencies> | 36 | <dependencies> |
| 22 | <dependency> | 37 | <dependency> |
| 23 | <groupId>cn.iocoder.boot</groupId> | 38 | <groupId>cn.iocoder.boot</groupId> |
| 24 | <artifactId>yudao-framework</artifactId> | 39 | <artifactId>yudao-framework</artifactId> |
| 25 | <version>${revision}</version> | 40 | <version>${revision}</version> |
| 26 | </dependency> | 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 | </dependencies> | 75 | </dependencies> |
| 28 | 76 | ||
| 29 | <!-- TODO 稍后清理掉 --> | 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,7 +250,7 @@ public class SysDictDataServiceImpl implements SysDictDataService { | ||
| 250 | 250 | ||
| 251 | @Override | 251 | @Override |
| 252 | public List<DictDataRespDTO> listDictDatasFromCache(String type) { | 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,6 +99,7 @@ apollo: | ||
| 99 | eagerLoad: | 99 | eagerLoad: |
| 100 | enabled: true # 设置 Apollo 在日志初始化前生效,可以实现日志的动态级别配置 | 100 | enabled: true # 设置 Apollo 在日志初始化前生效,可以实现日志的动态级别配置 |
| 101 | jdbc: # 自定义的 JDBC 配置项,用于数据库的地址 | 101 | jdbc: # 自定义的 JDBC 配置项,用于数据库的地址 |
| 102 | + dao: cn.iocoder.dashboard.modules.infra.dal.mysql.config.InfConfigDAOImpl | ||
| 102 | url: ${spring.datasource.dynamic.datasource.master.url} | 103 | url: ${spring.datasource.dynamic.datasource.master.url} |
| 103 | username: ${spring.datasource.dynamic.datasource.master.username} | 104 | username: ${spring.datasource.dynamic.datasource.master.username} |
| 104 | password: ${spring.datasource.dynamic.datasource.master.password} | 105 | password: ${spring.datasource.dynamic.datasource.master.password} |
yudao-admin-server/src/main/resources/application-local.yaml
| @@ -99,6 +99,7 @@ apollo: | @@ -99,6 +99,7 @@ apollo: | ||
| 99 | eagerLoad: | 99 | eagerLoad: |
| 100 | enabled: true # 设置 Apollo 在日志初始化前生效,可以实现日志的动态级别配置 | 100 | enabled: true # 设置 Apollo 在日志初始化前生效,可以实现日志的动态级别配置 |
| 101 | jdbc: # 自定义的 JDBC 配置项,用于数据库的地址 | 101 | jdbc: # 自定义的 JDBC 配置项,用于数据库的地址 |
| 102 | + dao: cn.iocoder.dashboard.modules.infra.dal.mysql.config.InfConfigDAOImpl | ||
| 102 | url: ${spring.datasource.dynamic.datasource.master.url} | 103 | url: ${spring.datasource.dynamic.datasource.master.url} |
| 103 | username: ${spring.datasource.dynamic.datasource.master.username} | 104 | username: ${spring.datasource.dynamic.datasource.master.username} |
| 104 | password: ${spring.datasource.dynamic.datasource.master.password} | 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,7 +66,7 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest { | ||
| 66 | // 准备参数 | 66 | // 准备参数 |
| 67 | String username = randomString(); | 67 | String username = randomString(); |
| 68 | // mock 方法 | 68 | // mock 方法 |
| 69 | - SysUserDO user = randomUserDO(o -> o.setUsername(username)); | 69 | + SysUserDO user = randomPojo(SysUserDO.class, o -> o.setUsername(username)); |
| 70 | when(userService.getUserByUsername(eq(username))).thenReturn(user); | 70 | when(userService.getUserByUsername(eq(username))).thenReturn(user); |
| 71 | 71 | ||
| 72 | // 调用 | 72 | // 调用 |
| @@ -93,7 +93,7 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest { | @@ -93,7 +93,7 @@ public class SysAuthServiceImplTest extends BaseDbUnitTest { | ||
| 93 | // 准备参数 | 93 | // 准备参数 |
| 94 | Long userId = randomLongId(); | 94 | Long userId = randomLongId(); |
| 95 | // mock 方法 01 | 95 | // mock 方法 01 |
| 96 | - SysUserDO user = randomUserDO(o -> o.setId(userId)); | 96 | + SysUserDO user = randomPojo(SysUserDO.class, o -> o.setId(userId)); |
| 97 | when(userService.getUser(eq(userId))).thenReturn(user); | 97 | when(userService.getUser(eq(userId))).thenReturn(user); |
| 98 | // mock 方法 02 | 98 | // mock 方法 02 |
| 99 | Set<Long> roleIds = randomSet(Long.class); | 99 | Set<Long> roleIds = randomSet(Long.class); |
yudao-framework/src/main/java/cn/iocoder/dashboard/framework/apollo/internals/DBConfigRepository.java
| 1 | package cn.iocoder.dashboard.framework.apollo.internals; | 1 | package cn.iocoder.dashboard.framework.apollo.internals; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 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 | import cn.iocoder.dashboard.framework.apollo.core.ConfigConsts; | 7 | import cn.iocoder.dashboard.framework.apollo.core.ConfigConsts; |
| 5 | import cn.iocoder.dashboard.framework.apollo.internals.dto.ConfigRespDTO; | 8 | import cn.iocoder.dashboard.framework.apollo.internals.dto.ConfigRespDTO; |
| 6 | import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; | 9 | import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; |
| 10 | +import cn.iocoder.dashboard.util.object.ObjectUtils; | ||
| 7 | import com.ctrip.framework.apollo.Apollo; | 11 | import com.ctrip.framework.apollo.Apollo; |
| 8 | import com.ctrip.framework.apollo.build.ApolloInjector; | 12 | import com.ctrip.framework.apollo.build.ApolloInjector; |
| 9 | import com.ctrip.framework.apollo.core.utils.ApolloThreadFactory; | 13 | import com.ctrip.framework.apollo.core.utils.ApolloThreadFactory; |
| @@ -13,8 +17,10 @@ import com.ctrip.framework.apollo.internals.ConfigRepository; | @@ -13,8 +17,10 @@ import com.ctrip.framework.apollo.internals.ConfigRepository; | ||
| 13 | import com.ctrip.framework.apollo.tracer.Tracer; | 17 | import com.ctrip.framework.apollo.tracer.Tracer; |
| 14 | import com.ctrip.framework.apollo.util.ConfigUtil; | 18 | import com.ctrip.framework.apollo.util.ConfigUtil; |
| 15 | import com.ctrip.framework.apollo.util.factory.PropertiesFactory; | 19 | import com.ctrip.framework.apollo.util.factory.PropertiesFactory; |
| 20 | +import lombok.SneakyThrows; | ||
| 16 | import lombok.extern.slf4j.Slf4j; | 21 | import lombok.extern.slf4j.Slf4j; |
| 17 | 22 | ||
| 23 | +import java.lang.reflect.Constructor; | ||
| 18 | import java.util.Comparator; | 24 | import java.util.Comparator; |
| 19 | import java.util.Date; | 25 | import java.util.Date; |
| 20 | import java.util.List; | 26 | import java.util.List; |
| @@ -58,9 +64,7 @@ public class DBConfigRepository extends AbstractConfigRepository { | @@ -58,9 +64,7 @@ public class DBConfigRepository extends AbstractConfigRepository { | ||
| 58 | this.propertiesFactory = ApolloInjector.getInstance(PropertiesFactory.class); | 64 | this.propertiesFactory = ApolloInjector.getInstance(PropertiesFactory.class); |
| 59 | this.m_configUtil = ApolloInjector.getInstance(ConfigUtil.class); | 65 | this.m_configUtil = ApolloInjector.getInstance(ConfigUtil.class); |
| 60 | // 初始化 DB | 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 | this.trySync(); | 70 | this.trySync(); |
| @@ -71,6 +75,18 @@ public class DBConfigRepository extends AbstractConfigRepository { | @@ -71,6 +75,18 @@ public class DBConfigRepository extends AbstractConfigRepository { | ||
| 71 | INSTANCE = this; | 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,8 +23,8 @@ public class ApolloApplicationContextInitializer implements EnvironmentPostProce | ||
| 23 | 23 | ||
| 24 | private int order = DEFAULT_ORDER; | 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 | @Override | 29 | @Override |
| 30 | public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { | 30 | public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { |