配置文件
- 描述
- 读取配置
- 注入配置
- 注解配置
- 配置实体类
- 设计原因
- 常见问题
- Jboot所有配置参考
描述
- jboot.properties 配置文件
- 环境变量
- Jvm 系统属性
- 启动参数
读取配置
public class AopController extends JbootController {
@ConfigValue("undertow.host")
private String host;
@ConfigValue("undertow.port")
private int port;
public void index(){
renderText("host:" + host +" port:" + port);
}
}
注解配置
在应用开发中,我们通常会使用注解,Jboot 内置了多个注解。
例如:
- @RequestMapping
- @EnableCORS
- @RPCInject
- @RPCBean
- …等等
在使用注解的时候,我们通常会这样来使用,例如:
@RequestMapping("/user")
public class UserController extends Controller{
}
或者
但是,无论是 @RequestMapping("/user")
或者是 @RPCBean(group="myGroup",version="myVersion",port=...)
, 其参数配置都是固定的,因此,Jboot 提供了一种动态的配置方法,可以用于读取配置文件的内容。
例如:
public class UserController extends Controller{
//....
}
user.mapping = /user
其作用是等效于:
因此,在 Jboot 应用中,注解的值可以通过 ${key}
的方式,读取到配置内容的 key 对于的 value 值。
配置实体类
很多时候,某个功能或组件可能需要 一堆
的配置,而不是一个配置,无论是手动编码读取 或者 是通过注入,就可以让我们的项目产生重复的代码。
Jboot 提供了配置实体类功能,该功能自动把配置信息 映射
给一个 JavaBean 实体类,方便我们 批量
读取配置信息。
例如:
某个组件叫 component1
,它需要如下几个配置信息。
- 主机
- 端口号
- 账号
- 密码
- 超时时间
那么,我们可以创建一个叫 Component1Config
的实体类,定义好其属性,如下代码 :
@ConfigModel(prefix="component1")
public class Component1Config{
private int port;
private String accout;
private String password;
private long timeout;
// 下方应该还有 getter setter, 略
}
由于 Jboot 定位是微服务框架,同时 Jboot 假设:基于 Jboot 开发的应用部署在 Docker 之上。
因此,在做 Devops 的时候,编排工具(例如:k8s、mesos)会去修改应用的相关配置,而通过环境变量和启动配置,无疑是最方便快捷的。
常见问题
1、如何设置启动参数 ?
2、如何设置 Jvm 系统属性 ?