之前我们的文章 java boot将一组yml配置信息装配在一个对象中
讲过了 通过ConfigurationProperties将配置文件中的内容默认装配进属性类
但 这建立在 bean是自己定义的 如果 这是个第三方的类呢?
就比如 我们在 application 中写了一套数据源的加载规则 但需要用第三方的bean加载 该怎么做呢?
下面 我来定义一个第三方bean试试
大家用任何第三方工具类都可以
这里 我用 druid 会简单一些
先注入依赖
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.16</version>
</dependency>
然后我们找一个类 引入DruidDataSource
import com.alibaba.druid.pool.DruidDataSource;
然后我们这样 输出一下
DruidDataSource ds = new DruidDataSource();
System.out.println(ds);
它里面输出了一定的内容
其实 给其他第三方类赋值 我们直接用里面的set方法 和我们自己写的都是一样的
这里 我们将代码改成这样
DruidDataSource ds = new DruidDataSource();
ds.setDriverClassName("java.kou");
System.out.println(ds.getDriverClassName());
这里 我们先set改了里面的 DriverClassName
然后 get输出
也是没有任何问题
因为我们现在不用自己创建的这个对象连数据库 所以 你把这个对象怎么改都是OK的
那么 知道了 可以用第三方类的set改属性 明白了这个 就简单很多了
我们在application 中定义一下这个DriverClassName属性
然后 我们在测试类中这样写
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
运行结果如下
可以看到 和我们写在配置文件中的内容是一模一样的