目前springboot已经发布3.0版本,需要将jdk升级到17及以上版本才可使用。
如需继续使用jdk8以及springboot3.0以下版本,将Server URl改为 https://start.aliyun.com/
一、IDEA创建Springboot
如果已有打开的idea项目,选择文件 -> 关闭项目 -> New Project


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

二、Springboot内容简介

Springboot由启动类启动,无需配置tomcat,SSM需要tomcat启动。
Springboot是内嵌web容器,框架内部配置了tomcat 无需像SSM一样打成war包运行,只需要打为jar包就行。
三、pom.xml文件
pom文件的作用:jar包管理工具,管理项目中需要的jar包、以及jar包的版本号。
SpringBoot帮我们都整理好了这些版本号。

-
spring-boot-dependencies:核心依赖在父工程里面
-
我们在写或者引入一些SpringBoot依赖的时候,不需要指定版本
-
这里版本号需要改到3.0以下
启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
-
启动器:说白了就是SpringBoot启动的场景
-
比如Spring-boot-srarter-web,他会帮助我们自动导入web环境所有的依赖
-
SpringBoot会将所有的功能场景,都变成一个个的启动器
-
我们需要使用的功能,只需要找到他们的启动器便可以进行使用
ssm是前后端一体的,springboot是前后端分离的。
springboot专门为微服务而生。SpringCloud就是Springboot加上一堆注解。
微服务就是一堆Springboot程序,构成若干集群,把这些集群放在一起就构成了微服务。
web启动器
<!--加载web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
@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
Spring Boot banner在线生成工具,制作下载英文banner.txt,修改替换banner.txt文字实现自定义,个性化启动banner-bootschool.net
根据该网站,弄好banner.txt文档,然后将其放在项目当中,启动项目就可以出现相应的画面!!!

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