SpringBoot-自定义配置-Bean属性外置

 

接着上一篇的属性自定义配置继续。 

5,应用程序的Bean外置

假定有一天,我们这个小程序需要需要留一下作者的联系方式 email,Tel和website,这两个属性又不想硬编码,这个时候,我们就可以把这个属性放在任意一个spring boot 支持的属性源之中,我还是继续放到application.properties中吧。

 打开application.properties文件,增加下面两个属性值。

contact.email=273232805@qq.com
contact.tel=18112345678
contact.web-site=https://blog.csdn.net/davidguoliu

增加后的效果如下图所示: 

现在我们如何把这个配置的属性传递给Thymeleaf模板中呢?

首先, 我们定义一个名为ContactProperties.java的类,这个类有3个属性email,tel和webSite,但这不是重要的,最重要的是这个类用@ConfigurationProperties注解开启了配置属性,开启了配置属性后,spring boot 就会到属性源中去找到属性值并注入到ContactProperties类中。

@ConfigurationProperties( prefix = "contact") prefix说明,ContactProperties中的属性应该从前缀为contact的属性源属性中注入。不仅如此,Spring Boot 的属性解析器还非常智能,能把驼峰命名的属性和使用下划线或者连接符的同名属性自动关联起来,webSite属性就是和很好的例子。

package com.example.myreadlist;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import sun.reflect.generics.tree.VoidDescriptor;

@Component
@ConfigurationProperties( prefix = "contact")
public class ContactProperties {

    private  String email;
    private  String tel;
    public  String webSite;


    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    public String getWebSite() {
        return webSite;
    }

    public void setWebSite(String webSite) {
        this.webSite = webSite;
    }
}

其次,我们需要在Controller中把属性值放入到Model模型中。

 @RequestMapping(value = "/{reader}",method = RequestMethod.GET)
    public String  readersBooks(@PathVariable("reader") String reader, Model mode){

        List<Book> readList=readListRepository.findByReader(reader);
        if(readList!=null) {
            mode.addAttribute("books", readList);
            mode.addAttribute("email",this.contactProperties.getEmail());
            mode.addAttribute("tel",this.contactProperties.getTel());
            mode.addAttribute("website",contactProperties.getWebSite());
        }
        return "readlist";
    }

最后,我们在Thymeleaf模板中绑定一下即可。

<p>
    <span th:text="'Email:'+${email}"></span>
    <span th:text="'  Tel'+${tel}"></span>
    <span th:text="'  WebSite:'+${website}"></span>
</p>

现在运行应用程序,就可以看到刚开始第一张图中描述的样子了。 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值