用IDEA搭建和部署Spring Boot开发环境

Posted 罗毅豪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用IDEA搭建和部署Spring Boot开发环境相关的知识,希望对你有一定的参考价值。

一、环境搭建(只说明关键步骤)

1.创建新项目

2.使用Spring的初始化器

 3.点击两次Next,选择如下依赖

 4.点击Next和Finish,进入项目,点击reimport,下载依赖

二、编写简单的后端代码

我有一个mysql数据库,里面有一个user表,以查询此表为例。

1.在项目中依次创建controller、service、dao、entity包

2.在controller下新建NameController类

package com.example.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class NameController {
    @RequestMapping("/lyh")
    public String myName(){
        return "罗毅豪";
    }
}

3.修改application.properties为application.yml,里面的内容为:

server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://1.15.186.160:3306/luoyihao
    username: lyh
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    show-sql: true

其中port是后端程序的端口号,然后是配置数据库的url、用户名和密码,最后是配置jpa。

4.点击运行,输入链接,查看效果。

5.对应数据库的user表,创建UserEntity

package com.example.demo.entity;

import lombok.Data;

import javax.persistence.*;
@Entity
@Table(name = "user")
@Data
public class UserEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private int id;
    @Column(name = "name")
    private String name;
    @Column(name = "pwd")
    private String pwd;
}

其中

@GeneratedValue(strategy = GenerationType.IDENTITY)

是JPA的注解,表示主键由数据库自动生成(主要是自动增长型) 。

6.创建UserDao接口

package com.example.demo.dao;

import com.example.demo.entity.UserEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

public interface UserDao extends JpaRepository<UserEntity,String>, JpaSpecificationExecutor<UserEntity> {
    UserEntity getByName(String name);
}

7.创建UserService

package com.example.demo.service;

import com.example.demo.dao.UserDao;
import com.example.demo.entity.UserEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
    @Autowired
    private UserDao userDao;

    public UserEntity getUserEntityByName(String name){
        return userDao.getByName(name);
    }

    public List<UserEntity> getAllUser(){
        return userDao.findAll();
    }
}

8.创建UserController

package com.example.demo.controller;

import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/getusers")
    public Object getUserInfo(){
        return userService.getAllUser();
    }
}

9.运行,查看效果

三、打包部署

1.先执行maven clean,再执行maven package

2.在target目录下会生成jar包

3.使用rz命令将jar包上传到Linux服务器上,建议放在/opt文件夹里

4.使用

java -jar demo-0.0.1-SNAPSHOT.jar

可在服务器上启动服务。

效果如下:

但是,用ctrl+C就停止了服务,我们想让该服务在后台运行,不中断。

5.使用

nohup java -jar demo-0.0.1-SNAPSHOT.jar>log.out &

命令可在服务器后台不中断运行服务。

其中&表示在当窗口关闭时,程序才会中止运行。

nohup表示不挂断运行命令,当账户退出或终端关闭时,程序仍然运行。

>log.out表示运行日志输出到log.out。

四、反向代理

我开发了前端页面,对接getusers接口。

nginx中部署前端应用

server{
    listen 8888;
    server_name  localhost;
    location / {
        root   /opt;
        index  index.html index.htm;
    }
}

但是由于后台接口的端口号是8080,8888访问8080出现了跨域问题。

这个时候,我们需要配置反向代理。

即在nginx中加下以下配置,使得用户在访问包含/getusers/的接口时会转移到8080端口上,解决跨域问题。

server{
    listen 8888;
    server_name  localhost;
    location / {
        root   /opt;
        index  index.html index.htm;
    }
    location /getusers/ {
        proxy_pass http://localhost:8080;
    }
}

效果如下:

然后将前端页面对接该接口地址,即可。

以上是关于用IDEA搭建和部署Spring Boot开发环境的主要内容,如果未能解决你的问题,请参考以下文章

kotlin web开发教程从零搭建kotlin与spring boot开发环境

从零学 spring cloud:1-1课:Spring Boot 环境搭建

Intellig IDEA 搭建spring boot 热部署

idea搭建Spring Boot+MyBatis

idea 搭建Spring Boot +Mybatis

spring-boot-devtools 实现热部署