Springboot搭建

一、IDEA创建Springboot

如果已有打开的idea项目,选择文件 -> 关闭项目 -> New Project

Springboot搭建_第1张图片
Springboot搭建_第2张图片

更改maven配置(file -> settings),选择本地maven下载速度快

Springboot搭建_第3张图片

二、Springboot内容简介

Springboot搭建_第4张图片

Springboot由启动类启动,无需配置tomcat,SSM需要tomcat启动。

Springboot是内嵌web容器,框架内部配置了tomcat 无需像SSM一样打成war包运行,只需要打为jar包就行。

三、pom.xml文件

pom文件的作用:jar包管理工具,管理项目中需要的jar包、以及jar包的版本号。

SpringBoot帮我们都整理好了这些版本号。

Springboot搭建_第5张图片
  • spring-boot-dependencies:核心依赖在父工程里面

  • 我们在写或者引入一些SpringBoot依赖的时候,不需要指定版本

  • 这里版本号需要改到3.0以下

启动器

 
     org.springframework.boot
     spring-boot-starter
  • 启动器:说白了就是SpringBoot启动的场景

  • 比如Spring-boot-srarter-web,他会帮助我们自动导入web环境所有的依赖

  • SpringBoot会将所有的功能场景,都变成一个个的启动器

  • 我们需要使用的功能,只需要找到他们的启动器便可以进行使用

ssm是前后端一体的,springboot是前后端分离的。

springboot专门为微服务而生。SpringCloud就是Springboot加上一堆注解。

微服务就是一堆Springboot程序,构成若干集群,把这些集群放在一起就构成了微服务。

web启动器



    org.springframework.boot
    spring-boot-starter-web

@RestController和@Controller有什么区别

加@Controller 方法内return的是html页面,相当于一个重定向; 而@RestController返回的是json。

:下边controller层,@RestController注解下返回的是“Hello world”字符串,当注解环卫@Controller则返回Hello world.html这个页面

测试

controller层

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String getHello(){
        return "Hello world";
    }
}

配置文件

server.port=8080

访问地址:http://localhost:8080/hello

四、部署

右侧maven选择clean 清除target文件;

点击package;

找到信息中Building jar 后边的路径,复制在文件管理中打开;
将打好的jar包放进单独项目文件夹;
在目录搜索框输入cmd;
输入java - jar +文件名  (例如:java -jar bootdemo-0.0.1-SNAPSHOT.jar)
在服务器部署:
finalshell连接服务器;
建立项目文件夹,将jar包传进来;
进入jar包所在位置,输入java - jar +文件名
访问:复制当前ip地址在浏览器打开(例如192.168.112.2:8080/hello)

服务器 使用脚本部署:

#作者:zc
#拷贝日期2023.3.13
#!/usr/bin/env bash

packageName="xxl-sso-server-1.1.1-SNAPSHOT.jar"
programName="xxl-sso-server-1.1.1-SNAPSHOT"


#检测状态
function status() {
  echo "---------------------------------------检测状态---------------------------------------"
  pid=$(ps -ef | grep -n ${packageName} | grep -v grep | awk '{print $2}')
  if [ ${pid} ]; then
    echo "${programName}正在运行,进程ID:${pid}"
  else
    echo "${programName}未运行!"
  fi
}

#停止程序
function stop() {
  echo "---------------------------------------停止程序---------------------------------------"
  #打印出当前的进程,grep -v grep 去掉grep进程
  pid=$(ps -ef | grep -n ${packageName} | grep -v grep | awk '{print $2}')
  #查询进程个数:wc -l 返回行数
  count=$(ps -ef | grep -n ${packageName} | grep -v grep | wc -l)
  echo "${programName}进程ID:$pid,进程个数:$count"
  #关闭进程
  if (($count > 0)); then
    kill -9 $pid
  else
    echo "${programName}未运行!"
    exit 0
  fi
  #打印关掉的进程ID
  echo "关闭进程:$pid"
  count=$(ps -ef | grep -n ${packageName} | grep -v grep | wc -l)
  sec=5
  sum=12
  #开始一个循环
  while (($sum > 0)); do
    if (($count > 0)); then
      #若进程还未关闭,则脚本sleep几秒
      sleep $sec
      count=$(ps -ef | grep -n ${packageName} | grep -v grep | wc -l)
    else
      #若进程已经关闭,则跳出循环
      echo "${programName}已经关闭!"
      break
    fi
    sum=$(($sum - 1))
  done
  #超时不能停止,强制杀掉进程
  if (($count > 0)); then
    kill -9 $pid
    echo "${programName}被强制关闭!"
    sleep 1
  fi
}

#启动程序
function start() {
  echo "---------------------------------------启动程序---------------------------------------"
  pid=$(ps -ef | grep -n ${packageName} | grep -v grep | awk '{print $2}')
  if [ ${pid} ]; then
    echo "${programName}正在运行,请先停止程序!"
  else
    #启动进程
    sudo nohup java  -jar  -server -Xms1024M -Xmx1024M -Xmn256M -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M -XX:+UseConcMarkSweepGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses -XX:+CMSClassUnloadingEnabled -XX:+ParallelRefProcEnabled -XX:+CMSScavengeBeforeRemark -XX:ErrorFile=/opt/app/message/jvm/hs_err_pid%p.log -Xloggc:/opt/app/message/jvm/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintClassHistogramBeforeFullGC -XX:+PrintClassHistogramAfterFullGC -XX:+PrintHeapAtGC -XX:HeapDumpPath=/opt/app/message/jvm -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:-OmitStackTraceInFastThrow ${packageName} --spring.profiles.active=test > start.log 2>&1 &
    pid=$(ps -ef | grep -n ${packageName} | grep -v grep | awk '{print $2}')
    if [ ${pid} ]; then
      echo "${programName}已经启动,进程ID为:$pid"
    else
      #等待5秒
      sleep 5
      pid=$(ps -ef | grep -n ${packageName} | grep -v grep | awk '{print $2}')
      if [ !${pid} ]; then
        echo "${programName}启动失败!"
      fi
    fi
  fi
}

#启动时带参数,根据参数执行
if [ ${#} -ge 1 ]; then
  case ${1} in
  "start")
    start
    ;;
  "restart")
    stop
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  *)
    echo "${1}无任何操作"
    ;;
  esac
else
  echo "
    start:启动
    stop:停止
    restart:重启
    status:检查状态
    示例命令如:./phoenix_server start
    "
fi

五、更改banner(启动图标,非必须)

可以在网上搜索:springboot banner

https://www.bootschool.net/ascii

根据该网站,弄好banner.txt文档,然后将其放在项目当中,启动项目就可以出现相应的画面!!!

Springboot搭建_第6张图片

当然banner当中的内容你可以自己去设定!

你可能感兴趣的:(Springboot学习,spring,boot,intellij-idea,mybatis)