java springboot 通过ConfigurationProperties给第三方bean注入属性

之前我们的文章 java boot将一组yml配置信息装配在一个对象中

讲过了 通过ConfigurationProperties将配置文件中的内容默认装配进属性类

但 这建立在 bean是自己定义的 如果 这是个第三方的类呢?

就比如 我们在 application 中写了一套数据源的加载规则 但需要用第三方的bean加载 该怎么做呢?

下面 我来定义一个第三方bean试试

大家用任何第三方工具类都可以

这里 我用 druid 会简单一些

先注入依赖

xml 复制代码
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.16</version>
</dependency>

然后我们找一个类 引入DruidDataSource

java 复制代码
import com.alibaba.druid.pool.DruidDataSource;

然后我们这样 输出一下

java 复制代码
DruidDataSource ds = new DruidDataSource();
System.out.println(ds);

它里面输出了一定的内容

其实 给其他第三方类赋值 我们直接用里面的set方法 和我们自己写的都是一样的

这里 我们将代码改成这样

java 复制代码
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName("java.kou");
System.out.println(ds.getDriverClassName());

这里 我们先set改了里面的 DriverClassName

然后 get输出

也是没有任何问题

因为我们现在不用自己创建的这个对象连数据库 所以 你把这个对象怎么改都是OK的

那么 知道了 可以用第三方类的set改属性 明白了这个 就简单很多了

我们在application 中定义一下这个DriverClassName属性

然后 我们在测试类中这样写

java 复制代码
package com.example.webdom;

import com.alibaba.druid.pool.DruidDataSource;
import com.example.webdom.controller.BookController;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class WebDomApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext ctx = SpringApplication.run(WebDomApplication.class);
        DruidDataSource ds = ctx.getBean(DruidDataSource.class);
        System.out.println(ds.getDriverClassName());
        //SpringApplication.run(WebDomApplication.class, args);
    }
    @Bean
    @ConfigurationProperties("textdata")
    public DruidDataSource getDruidDataSource() {
        DruidDataSource ds = new DruidDataSource();
        return ds;
    }

}

这里 我们定义 getDruidDataSource 函数 用bean注解 返回一个DruidDataSource 的bean对象

然后通过ConfigurationProperties 指定 注入textdata属性给bean

然后 输出 getDriverClassName

运行结果如下

可以看到 和我们写在配置文件中的内容是一模一样的

相关推荐
крон11 分钟前
【Auto.js例程】华为备忘录导出到其他手机
开发语言·javascript·智能手机
zh_xuan44 分钟前
c++ 单例模式
开发语言·c++·单例模式
coderSong25681 小时前
Java高级 |【实验八】springboot 使用Websocket
java·spring boot·后端·websocket
老胖闲聊1 小时前
Python Copilot【代码辅助工具】 简介
开发语言·python·copilot
Blossom.1181 小时前
使用Python和Scikit-Learn实现机器学习模型调优
开发语言·人工智能·python·深度学习·目标检测·机器学习·scikit-learn
Mr_Air_Boy2 小时前
SpringBoot使用dynamic配置多数据源时使用@Transactional事务在非primary的数据源上遇到的问题
java·spring boot·后端
曹勖之2 小时前
基于ROS2,撰写python脚本,根据给定的舵-桨动力学模型实现动力学更新
开发语言·python·机器人·ros2
豆沙沙包?2 小时前
2025年- H77-Lc185--45.跳跃游戏II(贪心)--Java版
java·开发语言·游戏
军训猫猫头2 小时前
96.如何使用C#实现串口发送? C#例子
开发语言·c#
年老体衰按不动键盘3 小时前
快速部署和启动Vue3项目
java·javascript·vue