heroku部署springboot项目并连接数据库

关于部署springboot项目,heroku官方文档很详细,虽说技术文档英语比较简单,但相信很多人多沉不下心来。我就把我部署成功的步骤写下了供有需要的人参考

heroku官方文档部署springboot文档,文档很详细一步一步来就行
先装好他的CI工具

再打开cmd,进入自己目录
使用下面的命令登陆

heroku login

创建springboot项目,也可以直接自己去springboot构建页创建

spring init --dependencies=web myapp

写一个简单的hello接口

@RequestMapping("/hi")
@ResponseBody
public Object hi(){
        return "hi hhh ";
    }

后面就是创建git仓库,也可使用其他git客户端创建:eclipse等IDE工具等等
进入自己的项目

cd 你的app
git init
git add .
git commit -m "first commit"

然后创建heroku app

heroku create

会产生随机的应用名 可以重命名

heroku apps:rename

然后提交代码

git push heroku master

TIM截图20180824100510.png

看到没有报错信息直接访问地址的接口


TIM截图20180824101327.png

到这里已告一段落了
但重要的是连接数据库
创建数据库

heroku addons:create heroku-postgresql

查看连接信息

heroku config
=== nameless-lake-8055 Config Vars
DATABASE_URL:               postgres://qplhasewkhqyxp:YXDPSRus9MrU4HglCPzjhOevee@ec2-54-204-47-58.compute-1.amazonaws.com:5432/dc9qsdnghia6v1
...

连接信息的格式postgres://:@/
到这里我们可以直接使用工具连接数据库了,比如Navicat,然后自己创建表,虽然他官方有一个初始化数据库的例子,太麻烦,我试了也没成功。

TIM图片20180824102300.png

我们通过JDBC来连接

public class DButill {
    public static Connection getConnection() throws URISyntaxException, SQLException {
        Connection con = null;
        try {
            String dbUrl = System.getenv("JDBC_DATABASE_URL");
            System.out.println(dbUrl);
            con = DriverManager.getConnection(dbUrl);
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("第一种获取连接失败");
            con = DButill.getConnection2();
        }
        System.err.println(con);
        return con;
    }
    
    private static Connection getConnection2() throws URISyntaxException, SQLException {
        URI dbUri = new URI(System.getenv("DATABASE_URL"));
     
        String username = dbUri.getUserInfo().split(":")[0];
        String password = dbUri.getUserInfo().split(":")[1];
        String dbUrl = "jdbc:postgresql://" + dbUri.getHost() + dbUri.getPath();
     
        return DriverManager.getConnection(dbUrl, username, password);
    }
}

读取的是Heroku注入的环境变量JDBC_DATABASE_URL
在线一个接口测试读取person表的数据

@RequestMapping("/db")
    @ResponseBody
    public Object dataTest(){
        List list = new ArrayList();
        try {
            Connection conn = DButill.getConnection();
            PreparedStatement pstmt = conn.prepareStatement("select * from person");
            ResultSet res = pstmt.executeQuery();
            
            while (res.next()) {
            String s =  res.getString(1);
            System.err.println(s);
            s =     res.getString(2);
            System.err.println(s);
            s =     res.getString(3);
            System.err.println(s);
            list.add(s);
                
            }
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
        
    }

提交代码到本地仓库
再push到heroku

git push heroku master

运行成功后
访问接口


TIM截图20180824103634.png

至于其他连接数据库的方法通过这次的认识结合文档应该很容易了吧。
毕竟数据库地址和密码都通过变量注入给你使用了。

参考:

*在Heroku上部署Java应用-连接数据库
*heroku devcenter

你可能感兴趣的:(heroku部署springboot项目并连接数据库)