java全家桶之43:JavaConfig=》ApolloConfig如何与SpringConfig配合

        该代码展示了基于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
    }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leijmdas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值