第一章 SpringBoot入门

news2024/11/23 7:00:47

1.SpringBoot简介

1.1.简介

        Spring Boot来简化spring应用开发,约定大于配置去繁从简,just run就能创建一个独立的,产品级别的应用。
         背景:J2EE笨重开发,繁多的配置、低下开发效率、复杂的部署流程、第三方技术集成难度大。
        解决: “Spring全家桶”时代;Spring Boot → J2EE一站式解决方案;Spring Cloud → 分布式整体解决方案。

1.2.优点

        快速创建独立运行的Spring项目以及与主流框架集成 ;使用嵌入式的Servlet容器,应用无需打成war包 ;starters自动依赖与版本控制 ;大量自动配置,简化开发,也可以修改默认值;无需配置XML,无代码生成,开箱即用;准生产环境的运行时应用监控;与云计算的天然集成。

2.微服务

         微服务:架构风格(服务微化)
        一个应用应该是一个一组小型服务;可以通过HTTP的方式进行互通;单体应用:ALL IN ONE;微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元。

3.环境准备

        JDK1.8:SpringBoot推荐JDK1.7及以上

        Maven3.x:maven3.3以上版本

        eclipse:2018、IDEA2017或者STS

        SpringBoot2.4.4RELEASE

4.maven设置

        maven设置本地仓库,在maven的conf文件中seting.xml文件改

<localRepository>D:\Maven\RepMaven</localRepository>

        给maven的setting.xml配置文件的profiles标签添加
 

    <profile>        
        <id>jdk-1.8</id>        
        <activation>            
            <activeByDefault>true</activeByDefault>            
            <jdk>1.8</jdk>        
        </activation>        
        <properties>            
            <maven.compiler.source>1.8</maven.compiler.source>                        
            <maven.compiler.target>1.8</maven.compiler.target>            
            <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>            
        </properties> 
    </profile>

        maven的mirrors标签添加阿里云镜像:

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

maven配置环境变量:
        在系统变量新建MAVEN_HOME,D:\software\apache-maven-3.6.0;
        在Path中末尾加入:%MAVEN_HOME%\bin;

5.创建SpringBoot项目

5.1.统一编码

        根据统一编码截图设置,除了Text本身设置为UTF-8编码外,属于他的几个子节点也要改,分别是:Text下的:Java Properties;Java Properties下的:Spring Properties;Text下的:JSP;以及JSP下的两个以JSP开头的两个子节点(编码可改也可不改)。

 

 

 

5.2.创建项目

        首先选中Spring perspective,在Package Explorer导航图下,右键new选择Spring start Project弹出如下对话框:

点击Next后,直接点击Finish按钮,再次点击Finish
在pom.xml文件中,加上:

<properties>
		<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
</properties>

        右键项目,选择Maven项目,选择更新项目(update project)
        处理完成后,启动XXXXXApplication.java的main方法,看到控制台有如下报文,就说明项目创建成功,配置也成功了!

 

5.3.创建一个hello world的Spring Boot项目

        功能描述: 浏览器发送hello请求,服务器接受请求并处理,响应Hello World字符串;
        1、创建一个maven工程;(jar)
        2、导入Spring Boot相关依赖

    <parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.4.1</version>	
		<relativePath/> <!-- lookup parent from repository -->
     </parent>
 
  	<properties>
		<java.version>1.8</java.version>
		<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
	</properties>
  	
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--Spring boot相关测试的依赖-->
        <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
    </dependencies>  

        3、编写一个主程序;启动Spring Boot应用

/**
 * @SpringBootApplication:标注主程序,说明这是一个Spring boot应用
 * @author lenovo
 *
 */
@SpringBootApplication
public class HelloWorldMainApplication {
	public static void main(String[] args) {
		
		//启动Springboot应用程序
		SpringApplication.run(HelloWorldMainApplication.class, args);
		
	}
}

        4、编写相关的Controller、Service

@Controller
public class HelloController {
	@ResponseBody
	@RequestMapping("/hello")
	public String hello(){
		return "hello world!";
	}
}

        或者使用@RestController都是一样的效果:因为@RestController包含了@ResponseBody和@Controller两个注释:

@RestController
public class HelloController {
	@RequestMapping("/hello")
	public String hello(){
		return "hello world!";
	}
	
}

        5、运行主程序测试:
        6、简化部署:

<build>
		<plugins>
             <!--Spring boot把程序打成一个可执行jar包的插件-->
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

        将这个应用打成jar包,直接使用Java -jar的命令进行执行;打包:
        有一个要求,运行环境不能只是jre,要向上到jdk

6、使用Spring Start Project快速创建项目

        Eclipse:使用Spring Start Project可以快速创建一个Spring Boot项目,选择需要的模块,这是联网去创建一个Spring Boot项目;
        默认生成的SpringBoot项目:

        主程序已经生成,接下来只需要开始业务逻辑的编写

        resources文件夹中的目录结构:

                static:保存所有的静态资源;js、css、images

                templates:保存所有的模板页面;(SpringBoot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面);可以使用模板引擎(freemarker、thymeleaf);

                application.properties:SpringBoot应用的配置文件,可以修改一些默认配置。

        server.port=8085 #设置springboot运行端口为8085,默认为8080

IDEA :使用Spring Initializer快速创建SpringBoot项目

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

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

相关文章

出现raise NotImplementedError报错

在学习《动手学深度学习》时&#xff0c;实现下面代码时&#xff0c;报出raise NotImplementedError错误。 import collections import torch from d2l import torch as d2l import math from torch import nnclass Seq2SeqEncoder(d2l.Encoder):def __init__(self,vocab_size,…

并发编程面试题2

并发编程面试题2 一、AQS高频问题&#xff1a; 1.1 AQS是什么&#xff1f; AQS就是一个抽象队列同步器&#xff0c;abstract queued sychronizer&#xff0c;本质就是一个抽象类。 AQS中有一个核心属性state&#xff0c;其次还有一个双向链表以及一个单项链表。 首先state…

NR sidelink(二) S-SSB

这篇看下NR sidelink S-SSB的内容,主要内容包括NR sidelink的同步原则,S-SSB的结构及相关序列,S-SSB的时频域位置,MasterInformationBlockSidelink IE解析,sidelink的同步过程,PSBCH payload及UE相关的能力IE。 NR sidelink的同步原则 参与sidelink通信之前,UE需要与覆…

VR全景智慧文旅,用科技助力旅游业振兴

引言&#xff1a; 近年来&#xff0c;科技的迅猛发展将我们带入一个全新的数字化时代&#xff0c;而虚拟现实&#xff08;Virtual Reality&#xff0c;简称VR&#xff09;技术则以其令人惊叹的全新方式&#xff0c;影响着各个领域。其中&#xff0c;旅游业作为人们探索世界、体…

AIGC接地项目机会网赚场景

变现场景 1、知识库 一个大公司有1000多份内部法规、合规的条文和规范&#xff0c;给员工普及这些知识很难&#xff0c;提前上课永远敌不过遇事抱佛脚。要是有一个能将1000条发文倒背如流的老司机&#xff0c;随时随地结合员工工作的实际场景&#xff0c;给出条文解释就好了。 …

多平台发布文章-项目总结

做个最近的AIGC内容创作技术要点的总结吧&#x1f63c; 流程图 时序图

研发工程师玩转Kubernetes——通过PV的节点亲和性影响Pod部署

在《研发工程师玩转Kubernetes——PVC通过storageClassName进行延迟绑定》一文中&#xff0c;我们利用Node亲和性&#xff0c;让Pod部署在节点ubuntud上。因为Pod使用的PVC可以部署在节点ubuntuc或者ubuntud上&#xff0c;而系统为了让Pod可以部署成功&#xff0c;则让PVC与Pod…

死锁的成因,和解决方案总结

何为死锁 死锁是多线程或并发程序中的一种情况&#xff0c;当多个线程因为竞争资源而相互等待&#xff0c;并且无法继续执行的情况。在死锁中&#xff0c;每个线程都在等待其他线程释放资源&#xff0c;从而导致所有线程都陷入无限等待状态&#xff0c;无法继续向前执行&#…

Python(七十六)字符串的驻留机制

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

C++:类与对象补充 - 初始化列表、static成员、友元、匿名对象

目录 引言 一、 初始化列表 1.1 构造函数内部赋值 1.2 使用初始化列表 1.3 注意事项 1.4 explicit关键字 二、 static成员 2.1 概念 2.2 情景 2.3 特性 三、 友元 3.1 概念 3.2 语法 3.2.1 友元函数 3.2.2 友元类 3.3 特性 四、匿名对象 4.1 概念 4.2 语法 …

Soundpad解决自动键失效的问题

这里给出解决方法&#xff0c;具体原因我也不太懂&#xff0c;因为我也是做实验得出某些操作可能会导致自动键不起作用。 首先打开首选项&#xff0c;配置如下图所示&#xff0c;这里只改了特殊热键的五个键位和自动键 我之前犯的错误&#xff0c;我相信大部分跟我一样&#…

74、75、76——tomcat项目实战

tomcat项目实战 tomcat 依赖 java运行环境,必须要有jre , 选择 jdk1.8 JvmPertest 千万不能用 kyj易捷支付 项目机器 选择 一台机器 ,安装jdk1.8的机器下载tomcat的包 上传到机器,解压tomcattomcat文件 bin文件夹: 启动文件 堆栈配置文件 catalina.sh JAVA_OPTS="-Xm…

vue3+ts使用antv/x6

使用 2.x 版本 x6.antv 新官网: 安装 npm install antv/x6 //"antv/x6": "^2.1.6",项目结构 1、初始化画布 index.vue <template><div id"container"></div> </template><script setup langts> import { onM…

DTW(Dynamic Time Warping)动态时间规整

转载于知乎DTW(Dynamic Time Warping)动态时间规整 - 知乎 DTW可以计算两个时间序列的相似度&#xff0c;尤其适用于不同长度、不同节奏的时间序列&#xff08;比如不同的人读同一个词的音频序列&#xff09;。DTW将自动warping扭曲 时间序列&#xff08;即在时间轴上进行局部的…

关于大功率H桥电机驱动模块

关于大功率H桥电机驱动模块 简介接线说明模块接线说明PWM调速控制说明 材料准备实际接线图测试视频总结 简介 大功率H桥电机驱动模块是由两个半桥驱动IC外加4个外部NMOS管组成&#xff0c;发热量小&#xff0c;刹车效果好。 两路PWM输入&#xff0c;占空比可在0-99%内调节。工…

2023/08/10

文章目录 一、计算属性传参二、小程序、h5跳转其他平台授权三、封装popup弹窗四、实现保存海报五、下载图片和复制分享链接 一、计算属性传参 计算属性的值往往通过一个回调函数返回&#xff0c;但是这个回调函数是无法传递参数的&#xff0c;要想实现计算属性传参可以通过闭包…

Python爬虫(十)_正则表达式

什么是正则表达式 正则表达式&#xff0c;又称规则表达式&#xff0c;通常被用来检索、替换那些符合某个模式&#xff08;规则&#xff09;的文本。 正则表达式是对字符串操作的一种逻辑公式&#xff0c;就是用事先定义好的一些特定字符、及这些特定字符的组合&#xff0c;组成…

Prometheus技术文档-基本使用-配置文件全解!!!!!

简介&#xff1a; Prometheus是一个开源的系统监控和告警系统&#xff0c;由Google的BorgMon监控系统发展而来。它主要用于监控和度量各种时间序列数据&#xff0c;比如系统性能、网络延迟、应用程序错误等。Prometheus通过采集监控数据并存储在时间序列数据库中&#xff0c;…

eNSP:双向重定向和路由策略练习

实验要求&#xff1a; 拓扑图&#xff1a; IP、路由器 r1: <Huawei>sys [Huawei]sys r1 [r1]int g 0/0/0 [r1-GigabitEthernet0/0/0]ip add 12.1.1.1 24 [r1-GigabitEthernet0/0/0]int g 0/0/1 [r1-GigabitEthernet0/0/1]ip add 14.1.1.1 24 [r1-GigabitEthernet0/0/1]…