Spring手动绑定ConfigurationProperties

Spring加载ConfigurationProperties的典型应用是自动加载(Autowired),在一些特殊的场景需要手动修改加载的Property属性。

代码实例,config类

import java.util.ArrayList;
import java.util.List;

import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix="devices")
public class DeviceConfig {

    private List<String> imports = new ArrayList<String>();
    private List<DeviceDetailsProperties> definitions = new ArrayList<DeviceDetailsProperties>();

    public List<String> getImports() {
        return this.imports;
    }

    public List<DeviceDetailsProperties> getDefinitions() {
        return definitions;
    }

    public void setImports(List<String> imports) {
        this.imports = imports;
    }

    public void setDefinitions(List<DeviceDetailsProperties> definitions) {
        this.definitions = definitions;
    }
}

DeviceConfig类代码用到的DeviceDetailsProperties,测试演示只有id

public class DeviceDetailsProperties {
    String id;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }
    @Override
    public String toString() {
        return id;
    }
}

测试代码类

import java.util.Properties;

import org.springframework.boot.bind.PropertiesConfigurationFactory;

public class Test {

    public static void main(String[] args) throws Exception {
        Properties props = new Properties();
        props.put("devices.imports[0]","imp1");
        props.put("devices.imports[1]","imp2");
        props.put("devices.definitions[0].id","first");
        props.put("devices.definitions[1].id", "second");

        DeviceConfig conf = new DeviceConfig();
        PropertiesConfigurationFactory<DeviceConfig> pcf = new PropertiesConfigurationFactory<DeviceConfig>(conf);
        pcf.setProperties(props);
        pcf.setTargetName("devices");

        conf = pcf.getObject();
        System.out.println(conf.getImports());
        System.out.println(conf.getDefinitions());
    }

}

 

运行结果:

时间: 2024-10-25 17:22:24

Spring手动绑定ConfigurationProperties的相关文章

[cocos2dx笔记008]cocos2d 用luabridge手动绑定类

基于cocos2dx 2.2.2版本.这几天使用了cocostudio实现了,动画,骨骼动画,UI编辑,粒子效果,虽然有些不足,但已经算是非常好了.今天尝试用lua,这个非常简单,创建的时候,设置语言为lua,那就可以创建lua工程. 在cocos2d-x-2.2.2\tools\project-creator下运行: python create_project.py -project test_lua -package com.android.zdhsoft -language lua xco

cocos2dx lua 绑定之二:手动绑定自定义类中的函数

cococs2dx 3.13.1 + vs2013 + win10 1.首先按照<cocos2dx lua 绑定之一:自动绑定自定义类>绑定Student类 2.在Student类中增加一个用于测试手动绑定的函数manual_call ①Student.h中增加函数 //手动绑定调用函数 void manual_call(); ②Student.cpp中增加函数实现 //和自动绑定相比,只增加了这个函数 void Student::manual_call() { std::cout <&

Spring如何绑定请求参数或PathVariable参数绑定到对象,并做使用@Valid做JSR3

Spring如何绑定请求参数或PathVariable参数绑定到对象,并做使用@Valid做JSR303校验 问题描述 以前在Spring中只对@RequestBody映射的请求参数使用过@Valid做JSR303校验,RequestBody一般适用与Json或者Xml报文,如果是表单提交的参数(a=xxx&b=xxx),或者通过@PathVariable从url映射过来的参数就不懂得怎么做校验了.后来查阅官方文档找到了实现方法. 解决方案 首先这里还是校验那些把请求参数映射成事先定义好的参数对

华为 s5700三层交换机手动绑定IP mac

一台华为S5700交换机作为核心,绑定用户端IP和MAC sys user-bind static ip-address 192.168.20.101 mac-address 0000-0000-0000-0000  <--手动绑定 display dhcp static user-bind all <--查看绑定信息 quit save

Cocos2d-x-3.x版 Js Binding 的手动绑定实现

网上流传的是一份2.x版本的,现在已更新到3.x,经过千辛万苦,终于调试成功. 1 .首先定义待绑定的类 AnimationKoo.h #ifndef __AnimationKoo_H__ #define __AnimationKoo_H__ namespace ls{ class AnimationKoo{ public: virtual void funcTest(); static AnimationKoo * create(); }; } #endif // __AnimationKoo

cocos2d-js 3.0 RC0 手动绑定 C++调用js,js调用C++ jsbinding

参考:http://www.tairan.com/archives/4902 参考文章是2.x版本的,对于3.0也许不合适了,没有深究. 代码:https://github.com/kenkozheng/cocos2d-js/tree/master/jsbinding(cpp_js%20js_cpp) 1 JS调用C++ 3.0中写这个绑定比较简单,跟ANE调用java如出一辙,一个JSContext,一个jsval,使用cocos2d提供的c++和js变量转换的函数做好转换即可. cocos2

React.Component三种手动绑定this方法

React.Component有三种手动绑定方法: 可以在构造函数中完成绑定 可以在调用时使用method.bind(this)来完成绑定 可以使用arrow function来绑定. 拿上例的handleClick函数来说,其绑定可以有: 1.构造函数绑定 constructor(props) { super(props); this.handleClick = this.handleClick.bind(this); //构造函数中绑定 } 2.调用时绑定method.bind(this)

spring boot 用@CONFIGURATIONPROPERTIES 和 @Configuration两种方法读取配置文件

spring cloud  读取 配置文件属性值 1.bean @Data public class LocalFileConfig { /** * 文件存储地址 */ private String fileServerPath; private String fileDownloadUrl; private String defaultCutSize; private String fileValidateType; private Long fileSize; } 配置 @Configura

转.Spring手动回滚事务

throw new RuntimeException(); 或者  TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 为什么不会滚呢??是对spring的事务机制就不明白.!! 默认spring 事务只在发生未被捕获的 RuntimeExcetpion时才回滚.  Spring Aop  异常捕获原理:被拦截的方法需显式抛出异常,并不能经任何处理,这样Aop代理才能捕获到方法的异常,才能进行回滚,默认情况