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

运行结果如下

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

相关推荐
mghio2 小时前
Dubbo 中的集群容错
java·微服务·dubbo
咖啡教室7 小时前
java日常开发笔记和开发问题记录
java
咖啡教室7 小时前
java练习项目记录笔记
java
鱼樱前端7 小时前
maven的基础安装和使用--mac/window版本
java·后端
RainbowSea8 小时前
6. RabbitMQ 死信队列的详细操作编写
java·消息队列·rabbitmq
RainbowSea8 小时前
5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
java·消息队列·rabbitmq
我不会编程55510 小时前
Python Cookbook-5.1 对字典排序
开发语言·数据结构·python
李少兄10 小时前
Unirest:优雅的Java HTTP客户端库
java·开发语言·http
此木|西贝10 小时前
【设计模式】原型模式
java·设计模式·原型模式