文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SpringBoot中@ConfigurationProperties注解怎么实现配置绑定

2023-06-30 10:04

关注

本篇内容介绍了“SpringBoot中@ConfigurationProperties注解怎么实现配置绑定”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

properties配置文件如下:

human.name=Mr.Yuhuman.age=21human.gender=male

如何把properties里面的配置绑定到JavaBean里面,以前我们的做法如下:

public class PropertiesUtil {    public static void getProperties(Person person) throws IOException {        Properties properties = new Properties();        properties.load(new FileInputStream("src/main/resources/demo.properties"));        //得到配置文件key的名字        Enumeration enumeration = properties.propertyNames();        while (enumeration.hasMoreElements()){            String key =(String)enumeration.nextElement();            String value = properties.getProperty(key);            System.out.println("key="+key+"——————value="+value);            //封装到JavaBean            //以下内容省略        }    }}

输出结果:

key=human.name——————value=Mr.Yu
key=human.age——————value=21
key=human.gender——————value=male

Process finished with exit code 0

可以看到这个过程十分繁杂,但是在SpringBoot中这个过程将会变得非常简单。

在SpringBoot中有如下3种方法:

@ConfigurationProperties注解+@Component(或@Controller或@Service或@Repository)注解

SpringBoot中@ConfigurationProperties注解怎么实现配置绑定

代码测试: properties配置文件:

human.name=Mr.Yuhuman.age=21human.gender=male

Person类:

@Component ////只有在容器中的组件,才会拥有SpringBoot提供的强大功能@ConfigurationProperties(value = "human")public class Person {    public String name;    public int age;    public String gender;    public Person() {    }    public Person(String name, int age, String gender) {        this.name = name;        this.age = age;        this.gender = gender;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getGender() {        return gender;    }    public void setGender(String gender) {        this.gender = gender;    }    @Override    public String toString() {        return "Person{" +                "name='" + name + '\'' +                ", age=" + age +                ", gender='" + gender + '\'' +                '}';    }}

测试类如下:

//@Controller////@ResponseBody以字符串的方式写给浏览器,而不是跳转到某个页面//@ResponseBody//@RestController =  @Controller +  @ResponseBody@RestControllerpublic class HelloController {    //自动注入属性    @Autowired    Person person;    @RequestMapping("/person")    public Person getPerson(){        return person;    }}

测试结果:

SpringBoot中@ConfigurationProperties注解怎么实现配置绑定

@ConfigurationProperties注解+@EnableConfigurationProperties注解

这种方式@EnableConfigurationProperties注解一定要在配置类上写,@EnableConfigurationProperties的意思是开启属性配置功能,开启谁的属性配置功能呢,因为我们上面的Person类想进行配置绑定,所以我们在后面加上参数Person.class:@EnableConfigurationProperties(Person.class)

@EnableConfigurationProperties(Person.class)的作用就是把这个Person组件注册到容器中,对象的名称为:human-com.ysw.boot.properties.Person 其中human是@ConfigurationProperties(value = "human")中前缀value的值

在Person类上还是有@ConfigurationProperties注解,这种方式把Person类上的@Component注解换成了配置类上的@EnableConfigurationProperties(Person.class)注解 

SpringBoot中@ConfigurationProperties注解怎么实现配置绑定

SpringBoot中@ConfigurationProperties注解怎么实现配置绑定

这种方式主要用在引用第三方包时,比如第三方包中有一个Person类,该类中没有使用@Component,我们也不能够给第三方包中的类加上@Component,这个时候就可以使用在配置类上加上@EnableConfigurationProperties注解的方法。

@ConfigurationProperties注解+@Import注解

配置类: 

SpringBoot中@ConfigurationProperties注解怎么实现配置绑定

Person类: 

SpringBoot中@ConfigurationProperties注解怎么实现配置绑定

 测试类: 

SpringBoot中@ConfigurationProperties注解怎么实现配置绑定

 application.properties文件:

server.port=8888human.name=Mr.Yuhuman.age=21human.gender=male222

测试结果:

SpringBoot中@ConfigurationProperties注解怎么实现配置绑定

“SpringBoot中@ConfigurationProperties注解怎么实现配置绑定”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯