该代码展示了基于Spring Boot的配置管理实现,主要包括两个配置类:1) BipApolloConfig类通过@ConfigurationProperties加载FTP(IP:10.18.41.192,端口21)和本地服务器(127.0.0.1:6666)配置,并集成Apollo配置中心;2) JavaConfig类通过条件装配创建FTP和Server的DTO对象,同时管理多种数据源配置(MySQL、Oracle)。测试输出显示完整配置信息,包括数据库连接、Redis、RabbitMQ等组件参数,验证了配置中心的正确加载和Bean的依赖注入。整个设计体现了Spring的配置外部化和条件化Bean创建机制。
配置:
#Sat Jun 21 22:19:50 CST 2025
dxp.props.ftp.ip = 10.18.41.192
dxp.props.ftp.port = 21
dxp.props.ftp.user = leijmdas
dxp.props.ftp.password = s19976823
dxp.props.server.ip = 127.0.0.1
dxp.props.server.port = 6666
@Configuration @ConfigurationProperties(prefix = "dxp.props") @EnableApolloConfig("application") @Data @Slf4j public class BipApolloConfig { //@Autowired //@ConfigurationProperties(prefix = "dxp.props.server") Map<String ,Object> server; //Autowired // @ConfigurationProperties(prefix = "dxp.props.ftp") Map<String ,Object> ftp; @PostConstruct public void init() { log.info("init BipApolloConfig{}!",this); } }
JAVAConfig
@Component
@Data
@Slf4j
@ConfigurationProperties(prefix = "spring")
@ConditionalOnBean(BipApolloConfig.class)
public class JavaConfig implements Serializable {
private static final long serialVersionUID = 1L;
@Autowired
BipApolloConfig bipApolloConfig;
@Autowired
Map<String, DbConfigDto> datasource;
@Bean @Primary //@ConfigurationProperties(prefix = "spring.props.ftp") @Qualifier("bip-ftp") @ConditionalOnBean(BipApolloConfig.class) public FtpServerDto getFtpDto() { FtpServerDto ftp = new FtpServerDto(); ftp.setIp(bipApolloConfig.getIp()); ftp.setPort(bipApolloConfig.getPort()); ftp.setUser(bipApolloConfig.getFtp().get("user").toString()); ftp.setPassword(bipApolloConfig.getFtp().get("password").toString()); return ftp; } @Bean //@ConfigurationProperties(prefix = "spring.props.server") @Qualifier("bip-server") @ConditionalOnBean(BipApolloConfig.class) public ServerDto getServerDto() { ServerDto server = new ServerDto(); server.setIp(bipApolloConfig.getIp()); server.setPort(bipApolloConfig.getPort()); return server; } @Autowired @Qualifier("bip-ftp") FtpServerDto ftp; @Autowired @Qualifier("bip-server") ServerDto server; }
test
@Test public void test002_selectByPkey() { log.info("javaConfig:{}", javaConfig); System.out.println("javaConfig:{}"+javaConfig); }
javaConfig:{
"bipApolloConfig":{
"ftp":{
"ip":"10.18.41.192",
"port":"21",
"user":"leijmdas",
"password":"s19976823"
},
"ftpIp":"10.18.41.192",
"ftpPort":21,
"ip":"127.0.0.1",
"port":6666,
"server":{
"port":"6666",
"ip":"127.0.0.1"
}
},
"boot":{
"admin.client.url":"http://192.168.4.111:8770"
},
"datasource":{
"dbConfigDto":{
"driverClassName":null,
"enabled":false,
"initialSize":0,
"maxWait":0,
"minIdle":0,
"password":null,
"testOnBorrow":false,
"testWhileIdle":false,
"type":null,
"url":null,
"username":null,
"validationQuery":null
},
"mysql":{
"driverClassName":"com.mysql.cj.jdbc.Driver",
"enabled":false,
"initialSize":5,
"maxWait":15000,
"minIdle":2,
"password":"leijmdas@163.comL",
"testOnBorrow":false,
"testWhileIdle":true,
"type":null,
"url":"jdbc:mysql://huawei.akunlong.top:13306/platform?autoReconnect=true&autoReconnectForPools=true&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull",
"username":"root",
"validationQuery":"SELECT 1"
},
"oracle":{
"driverClassName":"oracle.jdbc.driver.OracleDriver",
"enabled":false,
"initialSize":5,
"maxWait":15000,
"minIdle":2,
"password":"leijmdas",
"testOnBorrow":false,
"testWhileIdle":true,
"type":null,
"url":"jdbc:oracle:thin:@192.168.4.111:1521:XE",
"username":"leijmdas",
"validationQuery":"SELECT 1 from dual"
}
},
"fastdfs":{
"fileserver":"http://huawei.akunlong.top:8888",
"httpTrackerHttpPort":80,
"trackerServers":"www.kunlong.top:22122"
},
"ftp":{
"ip":"127.0.0.1",
"password":"s19976823",
"port":6666,
"user":"leijmdas"
},
"ftpDto":{
"ip":"127.0.0.1",
"password":"s19976823",
"port":6666,
"user":"leijmdas"
},
"rabbitmq":{
"channelRpcTimeout":0,
"host":"huawei.akunlong.top",
"password":"s123456",
"port":5672,
"publisherReturns":true,
"username":"user",
"virtualHost":"/"
},
"redis":{
"database":10,
"enabled":false,
"host":"erp.akunlong.top",
"password":"guankai2019",
"port":6379
},
"server":{
"ip":"127.0.0.1",
"password":null,
"port":6666,
"user":null
},
"serverDto":{
"ip":"127.0.0.1",
"password":null,
"port":6666,
"user":null
}
}