JavaEE9-Spring Boot概念,创建和运行

news2024/11/28 12:46:56

目录

1.Spring Boot是什么?为什么要学?

1.1.概念

1.2.优点

2.Spring Boot项目创建

2.1.使用Idea创建(ide开发商提供)

2.1.1.使用Idea社区版

2.1.2.使用Idea专业版

2.2.网页版创建(Spring官方提供)

3.Spring Boot项目目录介绍

4.输出Hello World

注意:包路径错误!

5.Spring Boot核心设计思想:约定大于配置


1.Spring Boot是什么?为什么要学?

1.1.概念

(Spring的诞生是为了简化Java程序开发,而Spring Boot的诞生是为了简化Spring程序开发。)

Spring Boot的翻译就是Spring框架的脚手架,是为了快速开发Spring框架而诞生的,更方便,简洁,小巧。

1.2.优点

  1. 快速集成框架,Spring Boot提供了启动添加依赖的功能,用于秒级集成各种框架(不用去官网搜索依赖支持再添加到pom.xml中)。
  2. 内置运行容器,无需配置Tomcat等Web容器(IDEA外部容器),直接运行和部署程序。
  3. 快速部署项目(一行命令),无需外部容器即可启动并运行项目。
  4. 可以完全抛弃繁琐的XML(xml会无端报错;xml不好调试和感知错误,idea对xml的适配不是很好;写法麻烦;每一个框架,技术都有其独有的xml格式,idea要匹配所有的技术不现实),使用注解和配置的方式进行开发。(Maven项目必须有xml,Gradle项目不需要xml)
  5. 支持更多的监控的指标(可通过网页的方式来停止Spring Boot项目),可以更好的了解项目的运行情况(注册了多少bean,运行在哪个平台,有几个定时任务,包括哪些方法,接口等)。

2.Spring Boot项目创建

2.1.使用Idea创建(ide开发商提供)

2.1.1.使用Idea社区版

要先安装Spring Assistant(Spring助手)插件。

(社区版部分太老或太新的版本的Idea插件可能不适配安装不了)

或:(会自动匹配Idea当前版本号)网页版安装插件https://plugins.jetbrains.com/plugin/15574-spring-assistant-valuetoyml

 创建Spring Boot项目:

  • Choose Spring Initializr server:在进行Spring Boot初始化时会使用哪个服务器。
  • Default:默认会从官方(国外地址)拉取数据源。
  • Spring cloud dataflow:Spring cloud数据源,一般不用。
  • Custom:自定义地址,如国内的阿里巴巴源。

点击Next如果出现Fetch Error错误:①关闭重新创建;②更换网络再试;③更换阿里国内源(它的版本会老一些https://start.aliyun.comhttp://xn--v6q16kl8x1g6aywe

解决:①关闭重新创建;②更换网络再试。

  • Group Id:组织id/公司id(域名倒置)。
  • Artifact Id:项目id。
  • Version:项目版本。
  • Project type:项目类型(默认情况下Spring Boot是个Maven项目(主流,配置文件采用xml格式)或Gradle项目(下一代的Maven,打包性能比Maven更好,配置文件采用key-value形式,语法更简洁)二者作用一样,语法略不同)。
  • Language:开发语言。
  • Packaging:打包类型(Spring Boot默认是Jar包,不仅含Web包,还含有其他包,是一系列组合的Jar包,可以使用Java命令直接启动Spring Boot项目;Servlet默认是War包(Web包),不能用Java命令启动)。
  • Java version:jdk版本(推荐8)。
  • Project name:项目名称。
  • Project description:项目描述。
  • Package name:项目包名/根路径。

  • 选择Spring Boot版本号(习惯使用次新正式版本(后面没有任何英文的))。

  • 添加外部jar包(打勾即可)。

  • 只需要修改项目名字和存放路径,其他不用改。
  • Module name:模块名字(目前创建的项目都是单项目单模块,可忽略)。
  • Content root:正文/项目的根目录。
  • Module file name:模块文件地址。
  • Project format:项目格式(记录idea的一些配置)。

点击Finish创建项目。

第一次打开Spring Boot项目需要加载很久,因为当前Spring Boot框架并没有在自己的本地仓库。

为了加速Spring Boot项目的下载,在打开项目之前,请先确认自己的Maven项目已经配置为国内源:

配置了国内源。

国内Settings.xml的配置信息如下:

<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  
  <pluginGroups>
  </pluginGroups>

  <proxies>
  </proxies>

  <servers>
  </servers>

  <mirrors>
    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central</mirrorOf>        
    </mirror>
  </mirrors>

  <profiles>
  </profiles>
</settings>

当DemoApplication类的图标为蓝色的可运行的C时,代表项目创建好了。

启动并验证Spring Boot项目是否创建成功,找到启动类(加了@SpringBootApplication注解的类

)运行main方法,若正常打印出来项目加载时间,说明项目启动成功:

问题:开始配置好环境后,启动不成功,报错显示端口号8080被占用。

解决

查看占用该端口号的进程pid,输入命令:

netstat -aon|findstr "被占用的端口号"

解除占用,输入命令:

taskkill /pid 占用该端口号的进程 /F

(如果带最后的/F,表示强制终止这个进程)

2.1.2.使用Idea专业版

专业版不需要安装任何插件。

2.2.网页版创建(Spring官方提供)

缺点:因为没有安装插件,在写配置文件时可能没有提示。

解决:重新下载可以安装插件的Idea版本,Idea可以多个版本并存的。

网页版创建项目先访问icon-default.png?t=MBR7https://start.spring.io

添加引用:

解压这个解压包保存好,若其他创建Spring Boot项目方法都失败,可以直接用本地的这个解压包在Idea上打开就ok,啥时候用,啥时候打开就好。

再使用Idea打开,Spring Boot项目就算创建成功了。

 

 访问出现以下页面说明网站启动了,只是没有页面。

 访问出现以下页面说明压根网站就不能访问。

3.Spring Boot项目目录介绍

先删除4个无效的文件夹:

Spring Boot项目有2个主要的目录:

  1. src/main/java为Java源代码。(添加5大类注解和方法注解的类都要写在src/main/java/com/example/demo下面,否则会报错)
  2. src/main/resources为静态资源或配置文件。
  • /static:静态资源文件夹。
  • /templates:模拟资源文件夹。

  • 存储所有的java源代码。
  • 启动类。
  • 资源文件。
  • 前端的文件。(HTML,JS,CSS,图片)
  • 存放页面中公共的通用的模板。
  • 项目配置文件。

设置当前项目的端口号为8082。

  • 单元测试的文件夹,存储所有单元测试类。
  • 每次在编译/运行项目时都会自动生成的文件夹,其中保存当前项目的字节码(给JVM使用)。经常会出现缓存的问题,解决:将其删除重新运行项目即可。修改完代码后一点更要重启,否则target里还是之前的老代码。(热部署后就不用自己重启了,Idea会自动监测到修改代码后进行重启)
  • 存放关于当前项目的所有依赖和项目的一些信息(如项目版本号等)

 

生成项目打包时把Lombook的插件排除掉,因为Lombook只是在编译之前起作用,编译之后就没有作用了。

4.输出Hello World

学习JavaEE就是用来实现Web项目或接口的,之前Spring是一个普通的Java项目,无法直接和浏览器进行互动;下面用Spring Boot来实现和浏览器及用户的交互。

注意:包路径错误!

把要注入到容器的类(写了五大类注解,方法注解的类)一定要和启动类放在同一个目录启动类的子目录中,这样Spring Boot项目才能正常地将bean注入到容器中。否则将不能识别。

  • 注入到容器的类和启动类在同级目录下√:

  • 注入到容器的类在启动类的子目录下√:

  • 其他情况×:

都会访问报错,说明Spring Boot项目没有将对象注入到容器中。

将要注入的类放在启动类的同级目录下:

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/hi") //路由映射
public class HelloController {

    @RequestMapping("/index") //路由映射
    @ResponseBody //返回一个非静态页面的数据
    public String sayHi() {
        return "Hi, Spring Boot.";
    }

}

@ResponseBody :返回一个非静态页面的数据,返回啥数据要看方法返回类型。

方法返回类型是HashMap/一个对象->返回json字符串。

方法返回类型是String->返回html数据。

点右上角运行(红圈)按钮。

通过IP地址+端口号+路由映射来访问:

5.Spring Boot核心设计思想:约定大于配置

Spring Boot项目能简单就简单,能不配置就不配置。所以有了一系列的约定做相应的管理和处理(上面例子),而简化了配置。能动嘴尽量不动手。

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/180218.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于深度学习的车道线检测论文解读

Ultra Fast Structure-aware Deep Lane Detection 论文地址:https://arxiv.org/abs/2004.11757 1.任务概述 车道线检测使用OpenCV就能够实现,而基于深度学习的车道线检测尝试解决车道线检测中的遮挡问题。 数据集介绍: 常用数据集:CULane Dataset,Tusimple(特点就是非常…

PostgreSQL 逻辑复制搭建测试

一、 准备工作 1. Publication&#xff08;发布&#xff09;节点 postgersql.conf wal_level logical max_replication_slots 8 #每个订阅需要消耗一个slot max_wal_senders 10 #每个订阅需要使用一个wal sender max_worker_processes128 #必须 >max_wal_senders加并…

BIO NIO AIO IO多路复用的区别

1、基础概念 1.1、阻塞非阻塞和同步异步的结合 下面通过例子来具体说明&#xff1a; 同步阻塞&#xff1a; 小明一直盯着下载进度条&#xff0c;到100%的时候完成。 同步体现在&#xff1a;小明关注下载进度条并等待完成通知。&#xff08;可以看成同步是我主动关注任务完成的…

进度管理(上)

规划进度管理 定义&#xff1a;规划进度管理是为实施项目进度管理制定计划的过程。 输入&#xff1a; 1、项目管理计划 2、项目章程&#xff08;包含里程碑&#xff0c;这个和规划进度有直接干系&#xff09; 3、组织过程资产 4、事业环境因素。 输出&#xff1a;进度管…

2 线性回归demo数据-参数配置|训练回归模型|常见的tensor格式|Hub模块简介|气温数据集与任务介绍

文章目录线性回归demo数据-参数配置线性回归demo数据-训练回归模型常见的tensor格式scalarvectormatrix线性回归demo数据-参数配置 # 先传入数据&#xff0c;可以是手动定义&#xff0c;也可以导入&#xff0c;这边就直接拿一条直线y2x1&#xff0c;来进行模拟了。 # 构造x和y…

一篇五分生信临床模型预测文章代码复现——Figure 7 外部数据集验证模型

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

python爬虫学习笔记-SQL学习

Sql概述 先来看一个例子&#xff1a;小王第一次使用数据库&#xff0c;然后跟数据库来了个隔空对话 其实&#xff0c;我们想一想&#xff0c;mysql是一个软件&#xff0c;它有它自己一套的管理规则&#xff0c;我们想要跟它打交道&#xff0c;就必须遵守它的规则&#xff0c;如…

【stl -- 常用算法】

目录&#xff1a;前言一、遍历算法for_each、transform二、查找、统计算法find、find_ifadjacent_findbinary_searchcount、count_if三、排序算法sortrandom_shufflemergereverse拷贝、替换算法copyreplace、replace_ifswap算数生成算法accumulatefill集合算法set_intersection…

Day10 @Import整合第三方框架原理

1 前言Spring与MyBatis注解方式整合有个重要的技术点就是lmport&#xff0c;第三方框架与Spring整合xml方式很多是凭借自定义标签完成的&#xff0c;而第三方框架与Spring整合注解方式很多是靠import注解完成的。然后Import可以导入如下三种类&#xff1a;普通的配置类&#xf…

【蓝桥杯】历届真题 画廊(决赛)Java

【资源限制】 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 【问题描述】 小蓝办了一个画展&#xff0c;在一个画廊左右两边陈列了他自己的作品。为了使画展更有意思&#xff0c;小…

英语学习打卡day6

2023.1.26 1.promiscuous adj.混杂的&#xff1b;杂乱的&#xff1b;滥交的 pro&#xff08;往前&#xff09;misc(mix)&#xff1a;在混乱上勇往直前 2.susceptible adj.易受影响(或伤害等);敏感;过敏;感情丰富的;善感的 accept(抓)接受 be susceptible to对…敏感 She isn…

【数据结构】7.3 树表的查找

文章目录7.3.1 二叉排序树1. 二叉排序树的定义2. 二叉排序树的查找二叉排序树算法二叉排序树算法分析3. 二叉排序树的插入4. 二叉排序树的生成5. 二叉排序树的删除7.3.2 平衡二叉树1. 平衡二叉树的定义2. 平衡二叉树的平衡调整方法LL型调整RR型调整LR型调整RL型调整3. 构造平衡…

C#手动操作DataGridView之------使用各种数据源填充表格实例

C#中的表格控件只有一个&#xff0c;那就是datagridview&#xff0c;不像QT中可以用QTableview&#xff0c;QTableWidget。新手拿到datagridview的第一个问题就是数据从哪里来&#xff1f;难道从设计器中一个个手动输入&#xff0c;到时候要变怎办&#xff1f;所以&#xff0c;…

Python3 PIL处理任意尺寸图片为1920*1080 图片模糊 虚化 图片合并居中叠加

各位好&#xff0c;我是宋哈哈&#xff0c;很久没更新文章了&#xff0c;其实这篇代码是我在年前已经写好了。代码呢&#xff0c;也比较冷门适合人很少。仅仅对会AE , PR 视频剪辑&#xff0c; 又要会 python 的人&#xff0c;而且在公司领导又要你来做相册视频&#xff0c;在公…

MSBuild 命令行编译Delphi

为了构建项目&#xff0c;IDE现在使用MSBuild而不是以前的内部生成系统。IDE中的build、compile和make命令调用Microsoft的新生成引擎&#xff1a;MSBuild&#xff0c;它提供了全面的依赖性检查。MSBuild项目文件基于XML&#xff0c;包含描述项目的特定项、属性、任务和目标的部…

[GWCTF 2019]枯燥的抽奖

目录 信息收集 知识回顾 解题思路 信息收集 查看源码&#xff0c;发现check.php <?php #这不是抽奖程序的源代码&#xff01;不许看&#xff01; header("Content-Type: text/html;charsetutf-8"); session_start(); if(!isset($_SESSION[seed])){ $_SESSIO…

html表格

1.基本标签 标签名说明table表示整体&#xff0c;用于包裹多个trtr表格每行&#xff0c;用于包裹tdtd表格单元格&#xff0c;用于包裹内容 注意点&#xff1a; 表格嵌套关系&#xff1a;table>tr>td 表格table的常见属性&#xff1a; 修饰table属性的标签 需要写道tab…

【FA-GAN:超分辨率MRI图像】

FA-GAN: Fused attentive generative adversarial networks for MRI image super-resolution &#xff08;FA-GAN&#xff1a;融合注意生成对抗网络的MRI图像超分辨率&#xff09; 高分辨率磁共振图像可以提供细粒度的解剖信息&#xff0c;但是获取这样的数据需要长的扫描时间…

UVA11426 - GCD - Extreme (II)(数论,欧拉函数)

题目链接&#xff1a;GCD - Extreme (II) - UVA 11426 - Virtual Judge (vjudge.net)​​​​​ 题意 给一个数N&#xff0c;求&#xff1a; ​​​​​​​ 其中&#xff0c;多组输入&#xff0c;输入以0结束&#xff0c;保证答案在long long范围内。 思路 很好的一道题…

移动web主轴设置和flex总结

移动web主轴设置和flex总结设置主轴方向修改主轴经常的使用场景&#xff1a;弹性盒子换行设置侧轴对齐方式flex 总结梳理主轴排列方式侧轴对齐方式-单行对齐侧轴对齐方式-多行弹性盒子换行设置主轴方向伸缩比设置主轴方向 主轴默认是水平方向, 侧轴默认是垂直方向 修改主轴方…