文档章节

使用 Hasor 实现 模版化配置文件

哈库纳
 哈库纳
发布于 2016/10/06 13:37
字数 633
阅读 168
收藏 0
点赞 0
评论 0

    Hasor 不光小巧还很精良,这一片文章我们来讲一讲 “模版化配置文件”。

    首先在了解模版化配置文件之前先看一下我们的实际开发中的问题。现在假设你有一个小团队,大家分别开发同一个项目的不同功能。通常情况下我们会为项目划分几个大模块,然后为每个模块建立一个自己的配置文件。或者干脆所有项目的配置都放到一个配置文件中。

    在这些配置信息中一般会包涵例如:文件上传路、数据库连接、远程接口服务器地址 这些配置,这些配置通常在不同的环境下有着不同的配置值,例如:日常、测试、预发、生产。

    而有些项目稍微改一下配置就回面部全非变成另外一个系统,这些配置也是跟随时机部署情况灵活改变的。

    如果你开发的是更大一点的网站,css、文件上传中心、图片服务器、等等都会独立出来。当你开发完应用程序,光是在生产环境替换这些配置信息就够你忙活一阵子了。更何况如果项目分了模块,要替换的配置文件还会更多。

    “模版化配置文件” 的提出是为了解决这个问题。

    下面我们以 数据库连接配置为例:

<config xmlns="http://project.hasor.net/hasor/schema/main">
    ...
    <jdbcSettings>
        <jdbcDriver>com.mysql.jdbc.Driver</jdbcDriver>
        <jdbcURL>jdbc:mysql://${jdbc.database_host}:3306/${jdbc.database_name}?useUnicode=true&amp;characterEncoding=utf-8</jdbcURL>
        <userName>${jdbc.user}</userName>
        <userPassword>${jdbc.password}</userPassword>
    </jdbcSettings>
    ...
</config>

    在上面这个配置中我们可以看到这样的结构“${xxxxx}” 。在 Hasor 的配置文件中,这段花括号括起来的表示的是环境变量名称。在上面这单代码中可以看到一共有 4 个环境变量配置。

${jdbc.database_host}
${jdbc.database_name}
${jdbc.user}
${jdbc.password}

    接下来我们在 classpath 目录下新建一个名为 “env.config” 的文本文件。然后把上面四个配置项保存到这里。Hasor 在启动的时候会加载 “env.config” 的配置信息,然后 Hasor 会使用这个配置信息替换配置文件中的相应配置信息。

jdbc.database_host = ...
jdbc.database_name = ...
jdbc.user          = ...
jdbc.password      = ...

    env.config 文件除了放置到 classpath 目录下还可以放到 WORK_HOME 环境变量表示的目录下也可以。如果放到 WORK_HOME 下面,您的应用程序包都不需要有任何修改了。

© 著作权归作者所有

共有 人打赏支持
哈库纳

哈库纳

粉丝 953
博文 81
码字总数 149803
作品 4
杭州
后端工程师
轻量级开发框架--Hasor

Hasor 是一款基于 Java 语言的应用程序开发框架,它的核心设计目标是提供一个简单、切必要的环境给开发者。开发者可以在此基础上,通过 Hasor 强有力的粘合机制,构建出更加完善的应用场景。...

哈库纳 ⋅ 2013/07/09 ⋅ 118

Hasor Group/hasor

Hasor    面向生产环境而设计的 Java 应用开发框架。它的核心设计目标是提供一个简单、且必要的环境给开发者。开发者可以在此基础上快速进行软件开发。    区别于其它框架的是 Hasor 有着...

Hasor Group ⋅ 2013/12/10 ⋅ 0

Hasor 2.2.0 正式发布,完美与Spring整合

===== Hasor-Core v2.2.0 (2016-2-23) 新增: 01.增加Event事件注册插件,简化事件的注册机制。 02.Settings接口增加 addSetting方法和clearSetting方法用来增加和删除配置项。 03.新增Sprin...

哈库纳 ⋅ 2016/02/25 ⋅ 11

Hasor 同 Spring OSGi 的比较及设计思想

这篇是承接《轻量级 Java 开发框架 设计》系列Blog文的后续文章,本文将通过设计思想,实现方式上对比 Hasor Spring OSGi 三者。 在开启本文之前我想用最简短的一段话介绍一下 Hasor 。 Haso...

哈库纳 ⋅ 2013/12/27 ⋅ 27

汇总 Hasor 已经开发完的功能

首先引用Wiki的介绍一下Hasor: “Hasor是一款开源框架。它是为了解决企业模块化开发中复杂性而创建的。Hasor遵循简单的依赖、单一职责,在开发多模块企业项目中更加有调理。然而Hasor的用途...

哈库纳 ⋅ 2013/07/29 ⋅ 6

Hasor 的 Xml 配置文件解析详解

我觉得 Xml 作为配置文件最大的好处是结构化,对程序配置信息可以有结构有组织的进行描述。但是使用 Xml 作为配置文件带给我们的问题是我们需要程序自己去解析Xml配置文件结构。这显得有点多...

哈库纳 ⋅ 2013/12/31 ⋅ 4

使用你喜欢的模版引擎渲染页面

目前 Web 网站的开发 基本都用到了模版引擎,使用 Hasor 开发 web 可以使用你喜欢的任何模版解析引擎。在开始本文之前,先推荐您三篇相关文章: https://my.oschina.net/u/1166271/blog/7530...

哈库纳 ⋅ 2016/10/06 ⋅ 0

Hasor-0.0.1.20130831-M1,Hasor首次发布

Hasor首次发布包含Hasor-Core和Hasor-MVC两个组件。 Hasor-Core: 01.)基于COC原则。基本的开发不需要任何配置。 02.)支持模块生命周期调度;支持模块依赖循环检测;启动时提示模块依赖树。 ...

哈库纳 ⋅ 2013/08/31 ⋅ 2

Hasor 核心架构设计

这篇是承接《轻量级 Java 开发框架 设计》系列Blog文的后续文章,写了好多有关 Hasor 的文章发现却没有一篇是从整体上介绍 Hasor 是如何设计的,在这里正好补上。 一、主要软件包和插件 设计...

哈库纳 ⋅ 2013/12/21 ⋅ 4

Hasor-2.4.3 发布,使用表单验证

Hasor 2.4.3 正式发布了,Hasor 是一款基于 Java 语言的应用程序开发框架,它的核心设计目标是提供一个简单、且必要的环境给开发者。开发者可以在此基础上,通过 Hasor 强有力的粘合机制,构...

哈库纳 ⋅ 2016/08/19 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 20分钟前 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 23分钟前 ⋅ 0

Webpack 4 api 了解与使用

webpack 最近升级到了 v4.5+版 01 官方不再支持 node4 以下版本 官方不再支持 node4 以下版本官方不再支持 node4 以下的版本,所以如果你的node版本太低,先开始升级node吧!话说node10 ...

NDweb ⋅ 32分钟前 ⋅ 0

使用nodeJs安装Vue-cli

Vue脚手架就是一个Vue框架开发环境 脚手架的意思是帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基础的依赖库,只需要 npm install就可以安装,让我们不需要为了编辑或者一些其...

木筏笔歆 ⋅ 今天 ⋅ 0

【微信小程序开发实战】0x00.开发前准备工作

写在开始 本人资深后端码农一枚,近期项目需求,接触到了微信小程序,将学习过程整理成文分享给小伙伴们,由于是边学边整理难免有表述不对的地方,望大家及时指正,感谢。 本人微信号: dream...

dreamans ⋅ 今天 ⋅ 0

linux redis的安装和php7下安装redis扩展

安装redis服务器 (1)下载安装包: $ wget http://download.redis.io/releases/redis-2.8.17.tar.gz (2)编译程序: $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make $ cd src &&......

concat ⋅ 今天 ⋅ 0

Guava EventBus源码解析

一、EventBus使用场景示例 Guava EventBus是事件发布/订阅框架,采用观察者模式,通过解耦发布者和订阅者简化事件(消息)的传递。这有点像简化版的MQ,除去了Broker,由EventBus托管了订阅&...

SaintTinyBoy ⋅ 今天 ⋅ 0

http怎么做自动跳转https

Apache 版本 如果需要整站跳转,则在网站的配置文件的<Directory>标签内,键入以下内容: RewriteEngine on RewriteCond %{SERVER_PORT} !^443$ RewriteRule ^(.*)?$ https://%{SERVER_NAME......

Helios51 ⋅ 今天 ⋅ 0

Python爬虫,抓取淘宝商品评论内容

作为一个资深吃货,网购各种零食是很频繁的,但是能否在浩瀚的商品库中找到合适的东西,就只能参考评论了!今天给大家分享用python做个抓取淘宝商品评论的小爬虫! 思路 我们就拿“德州扒鸡”...

python玩家 ⋅ 今天 ⋅ 0

MySQL 内核深度优化

MYSQL数据库适用场景广泛,相较于Oracle、DB2性价比更高,Web网站、日志系统、数据仓库等场景都有MYSQL用武之地,但是也存在对于事务性支持不太好(MySQL 5.5版本开始默认引擎才是InnoDB事务...

java高级架构牛人 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部