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 分钟前
docker 部署 java 项目详解
java·docker·容器
null or notnull39 分钟前
idea对jar包内容进行反编译
java·ide·intellij-idea·jar
Eiceblue1 小时前
Python 合并 Excel 单元格
开发语言·vscode·python·pycharm·excel
言午coding2 小时前
【性能优化专题系列】利用CompletableFuture优化多接口调用场景下的性能
java·性能优化
幸好我会魔法2 小时前
人格分裂(交互问答)-小白想懂Elasticsearch
大数据·spring boot·后端·elasticsearch·搜索引擎·全文检索
危险、2 小时前
Spring Boot 无缝集成SpringAI的函数调用模块
人工智能·spring boot·函数调用·springai
SomeB1oody2 小时前
【Rust自学】15.2. Deref trait Pt.1:什么是Deref、解引用运算符*与实现Deref trait
开发语言·后端·rust
缘友一世2 小时前
JAVA设计模式:依赖倒转原则(DIP)在Spring框架中的实践体现
java·spring·依赖倒置原则
何中应3 小时前
从管道符到Java编程
java·spring boot·后端
SummerGao.3 小时前
springboot 调用 c++生成的so库文件
java·c++·.so