配置文件

    • 描述
    • 读取配置
    • 注入配置
    • 注解配置
    • 配置实体类
    • 设计原因
    • 常见问题
    • Jboot所有配置参考

    描述

    • jboot.properties 配置文件
    • 环境变量
    • Jvm 系统属性
    • 启动参数

    读取配置

    1. public class AopController extends JbootController {
    2. @ConfigValue("undertow.host")
    3. private String host;
    4. @ConfigValue("undertow.port")
    5. private int port;
    6. public void index(){
    7. renderText("host:" + host +" port:" + port);
    8. }
    9. }

    注解配置

    在应用开发中,我们通常会使用注解,Jboot 内置了多个注解。

    例如:

    • @RequestMapping
    • @EnableCORS
    • @RPCInject
    • @RPCBean
    • …等等

    在使用注解的时候,我们通常会这样来使用,例如:

    1. @RequestMapping("/user")
    2. public class UserController extends Controller{
    3. }

    或者

    但是,无论是 @RequestMapping("/user") 或者是 @RPCBean(group="myGroup",version="myVersion",port=...) , 其参数配置都是固定的,因此,Jboot 提供了一种动态的配置方法,可以用于读取配置文件的内容。

    例如:

    1. public class UserController extends Controller{
    2. //....
    3. }
    1. user.mapping = /user

    其作用是等效于:

    因此,在 Jboot 应用中,注解的值可以通过 ${key} 的方式,读取到配置内容的 key 对于的 value 值。

    配置实体类

    很多时候,某个功能或组件可能需要 一堆 的配置,而不是一个配置,无论是手动编码读取 或者 是通过注入,就可以让我们的项目产生重复的代码。

    Jboot 提供了配置实体类功能,该功能自动把配置信息 映射 给一个 JavaBean 实体类,方便我们 批量 读取配置信息。

    例如:

    某个组件叫 component1 ,它需要如下几个配置信息。

    • 主机
    • 端口号
    • 账号
    • 密码
    • 超时时间

    那么,我们可以创建一个叫 Component1Config 的实体类,定义好其属性,如下代码 :

    1. @ConfigModel(prefix="component1")
    2. public class Component1Config{
    3. private int port;
    4. private String accout;
    5. private String password;
    6. private long timeout;
    7. // 下方应该还有 getter setter, 略
    8. }

    由于 Jboot 定位是微服务框架,同时 Jboot 假设:基于 Jboot 开发的应用部署在 Docker 之上。

    因此,在做 Devops 的时候,编排工具(例如:k8s、mesos)会去修改应用的相关配置,而通过环境变量和启动配置,无疑是最方便快捷的。

    常见问题

    1、如何设置启动参数 ?

    2、如何设置 Jvm 系统属性 ?

    Jboot 所有配置参考