博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【spring boot】SpringBoot初学(2) - properties配置和读取
阅读量:4986 次
发布时间:2019-06-12

本文共 3815 字,大约阅读时间需要 12 分钟。

前言

  只是简单的properties配置学习,修改部分“约定”改为自定义“配置”。真正使用和遇到问题是在细看。

一、主要

  核心只是demo中的: @PropertySource(value = "classpath:/config/custom.properties", ignoreResourceNotFound = true)

 

二、demo

// application 注解@Configuration@ComponentScan@EnableAutoConfiguration@PropertySource(value = "classpath:/config/custom.properties", ignoreResourceNotFound = true)// Controller 注解@Controllerpublic class PropertiesController {    @Value("${CONSTANT_PASSWORD}")    private String password;    @Autowired    private ConfigBean configBean;    @RequestMapping("/custom")    public String custom(@RequestParam(value="name", required=false, defaultValue="${CONSTANT_USER}") String name            , Model model) {        model.addAttribute("name", name);        model.addAttribute("password", password);        System.out.println(configBean);        return "custom";    }    public static void main(String[] args) {        SpringApplication.run(PropertiesController.class, args);    }}

config/custom.properties

## 常量配置CONSTANT_USER=vergiylnCONSTANT_PASSWORD=中文123## thymeleaf 配置spring.thymeleaf.prefix=classpath:/templates/properties/spring.thymeleaf.suffix=.htmlspring.thymeleaf.mode=HTML5spring.thymeleaf.encoding=UTF-8spring.thymeleaf.content-type=text/html    # set to false for hot refreshspring.thymeleaf.cache=false

config/ConfigBean.properties  注入bean配置(日期暂时不知道怎么注入)

vergilyn.map[blog]=http://www.cnblogs.com/VergiLyn/vergilyn.map[name]=VergiLynvergilyn.map[remark]=备注,中文23333vergilyn.list[0]=Carpentersvergilyn.list[1]=Celine Dionvergilyn.list[2]=Bon Jovivergilyn.list[3]=Taylor Swiftvergilyn.str=stringvergilyn.num=124vergilyn.date=2017-01-14 23:55:19vergilyn.isSuccess=false

properties对应的JavaBean

@Configuration// prefix = value,看源码@ConfigurationProperties(prefix = "vergilyn")@PropertySource("classpath:config/ConfigBean.properties")@Componentpublic class ConfigBean implements Serializable{    private String str;    private Integer num;//  注意:要是setIsSuccess(),不能是setSuccess()
private boolean isSuccess;
//  日期不知道怎么注入
//  private Date date;    private Map
map; private List
list; public String getStr() { return str; } public void setStr(String str) { this.str = str; } public Integer getNum() { return num; } public void setNum(Integer num) { this.num = num; } public Map
getMap() { return map; } public void setMap(Map
map) { this.map = map; } public List
getList() { return list; } public void setList(List
list) { this.list = list; } public Boolean isSuccess() { return isSuccess; } public void setIsSuccess(Boolean success) { isSuccess = success; }}

custom.html

    测试properties    

测试结果:

二、扩展

  1、idea中注入properties中文乱码。

    起初,我以为需要*.properties或者*.xml或者别的什么配置中要配置编码,但发现并不是。

    参考:

  2、注入属性类型。

    如demo,基本上string、int是可以的,不用多余的配置。但测试date并不知道怎么注入。

    特别需要注意的是isSuccess;生成的set是setSuccess(),但properties中确实isSuccess导致注入失败。

  3、@ConfigurationProperties中可以设置前缀

Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface ConfigurationProperties {    @AliasFor("prefix")    String value() default "";    @AliasFor("value")    String prefix() default "";    boolean ignoreInvalidFields() default false;    boolean ignoreNestedProperties() default false;    boolean ignoreUnknownFields() default true;    boolean exceptionIfInvalid() default true;    /** @deprecated */    @Deprecated    String[] locations() default {};    /** @deprecated */    @Deprecated    boolean merge() default true;}

    如源码,可以看出prefix与value是一样的。

  4、thymeleaf 表达式、方言

    ${...}:变量表达式;

    *{...}:选择变量表达式;

    #{...}:消息表达式;

    @{...}:链接url表达式

    有待了解,现在还不清楚具体是什么、如何使用、什么时候用。

    参考:

       

       

 

附录

   

转载于:https://www.cnblogs.com/VergiLyn/p/6286507.html

你可能感兴趣的文章
方法区
查看>>
Django-----ORM
查看>>
ARCGIS部分刷新
查看>>
发 零 食
查看>>
poj3613:Cow Relays(倍增优化+矩阵乘法floyd+快速幂)
查看>>
洛谷P1886 滑动窗口
查看>>
Shell编程(二)Bash中调用Python
查看>>
主动与被动监控 拓扑图组合图 自定义监控
查看>>
SQL总结(一)基本查询
查看>>
PDF分割--可脱离python环境执行,可传参数,可弹窗的PC端小工具
查看>>
cas-client-core单点登录排除不需要拦截的URL
查看>>
OCR技术浅探 : 文字定位和文本切割(2)
查看>>
jmeter集合点
查看>>
Java类代码块执行顺序
查看>>
克鲁斯卡尔(模板题)
查看>>
汉字转拼音
查看>>
Python中Web框架编写学习心得
查看>>
dataTable/dataSet转换成Json格式
查看>>
asp.net core模块学习
查看>>
MySQL远程连接不上的解决方法
查看>>