上一讲我们说到使用 H2
存储数据,那么如果我们部署到 Heroku
是否也有免费的数据库用?答案是对的。
小编之前编写的两个工具现在依然用的是 Heroku
的免费服务和数据库。极客冲顶 和 Commenthub。下面让我们把上一讲的数据脚本自动执行到 Heroku
,体验一下 Migration
的便捷性。
配置 Heroku
因为 Heroku 是 Paas 服务,它集成了很多可以插拔的组件,所以 MySQL 也是这样一个组件,我们需要添加一个 MySQL 然后才能使用。
首先我们看一下费用,Heroku 提供的免费的 MySQL,支持 5M 的存储,10个 Connections,很小,但是对于我们测试已经足够了。
我们还是先通过浏览器进入 Heroku 的控制面板
点击 Configure Add-ons,这个时候会提示如下内容,意思是在添加组件之前,你需要关联一个信用卡,不然不能添加。当然这个关联并不会扣费。直接点击图片上面的 Verify Now即可添加信用卡。
接下来继续点击刚才的添加按钮,进入如下页面。
在搜索框里面输入 MySQL,选择 ClearDB。弹出输入框选择确定即可,这样就为 Heroku 添加了 MySQL。
接下来我们需要对程序改造。
修改程序
就我们所知,application.yml 区分为 production 和 dev,我们这个时候直接修改 application-product.yml 就可以了。添加如下内容:
db:
url: ${JDBC_DATABASE_URL}&useUnicode=true&characterEncoding=UTF-8
username: ${JDBC_DATABASE_USERNAME}
password: ${JDBC_DATABASE_PASSWORD}
driver: com.mysql.jdbc.Driver
当 Heroku 添加 MySQL 成功以后,会自动创建上面这些环境变量,所以我们直接使用即可。
另外延迟没有支持 Heroku 的原因是 Flyway 和 Druid 支持不是特别好,在小编反复调试下,把 Druid 换成了 C3P0,所以你现在下载最新的代码,部署到 Heroku 上面是工作的。具体修改如下,第一步添加 pom.xml
<!--C3P0-->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
接下来直接修改 applicationContext.xml 就可以了,其他不需要修改。
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="${db.driver}"/>
<property name="jdbcUrl" value="${db.url}"/>
<property name="user" value="${db.username}"/>
<property name="password" value="${db.password}"/>
<property name="maxPoolSize" value="5"/>
<property name="minPoolSize" value="1"/>
<property name="maxStatements" value="20"/>
</bean>
那你也来试试吧。
源码
服务端源码地址,Tag V8
https://github.com/codedrinker/jiuask-server
本文分享自微信公众号 - Java后端(web_resource)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。