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

运行结果如下

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

相关推荐
浪扼飞舟4 分钟前
c#基础二(类和对象,构造器调用顺序、访问级别、重写和多态、抽象类和接口)
java·开发语言·c#
小枫编程15 分钟前
Spring Boot 与微服务网关集成问题:Zuul、Spring Cloud Gateway 与鉴权策略
spring boot
yuanpan21 分钟前
python标准库有哪些模块,简单总结下。
开发语言·python
听情歌落俗28 分钟前
MATLAB3-2数据存储-台大郭彦甫
开发语言·数学建模·matlab·矩阵
失散1328 分钟前
分布式专题——10.5 ShardingSphere的CosID主键生成框架
java·分布式·架构·分库分表·shadingsphere
云天徽上1 小时前
【数据可视化-112】使用PyEcharts绘制TreeMap(矩形树图)完全指南及电商销售数据TreeMap绘制实战
开发语言·python·信息可视化·数据分析·pyecharts
2501_926227942 小时前
UDP网络编程:【Java】无连接通信到Socket实战(二)
java·网络·udp
NG WING YIN2 小时前
Golang關於信件的
开发语言·深度学习·golang
Sunny_yiyi2 小时前
Java根据模版导出PDF文件
java·开发语言·pdf