news 2026/3/18 15:51:08

SpringBoot概念介绍和设计理念

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot概念介绍和设计理念
SpringBoot介绍

Spring Boot对Spring平台和第三方库进行了整合,可创建可以运行的、独立的、生产级的基于Spring的应用程序。(大多数Spring Boot应用程序只需要很少的Spring配置)
Spring Boot可以使用java -jar或更传统的war部署启动的Java应用程序进行创建,可以内嵌Tomcat 、Jetty .Undertow容器,快速启动web程序。

设计目标
  • 为所有Spring开发提供更快且可通用的入门体验
  • 开箱即用,可以根据需求快速调整默认值。
  • 提供大型项目(例如嵌入式服务器、运行状况检查和统一配置)通用的一系列非功能性功能
  • 绝对没有代码生成,也不需要XML配置。
SpringBoot 优势对比预览

SpringBoot 优势快速预览

1. SpringMVC方式
(1) 修改pom.xml成类似以下的内容
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.study</groupId> <artifactId>spring-mvc</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>spring-mvc Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.5.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/jstl --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> </dependencies> <build> <finalName>spring-mvc</finalName> </build> </project>
(2) 创建并修改web.xml成类似以下的内容
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <!-- 编码过滤 --> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- springMVC DispatcherServlet 配置 --> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <!-- 指定配置文件 --> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/dispatcher-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
(3) 创建并修改dispatcher-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- 配置静态资源由web服务器的默认servlet处理 --> <mvc:default-servlet-handler /> <!-- 启动注解支持 --> <mvc:annotation-driven/> <!-- <mvc:annotation-driven> <mvc:message-converters register-defaults="true"> --> <!-- 避免IE执行AJAX时,返回JSON出现下载文件 --> <!-- <bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>application/json;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven> <mvc:default-servlet-handler/> --> <!-- 配置扫描注解组件的基础包 --> <context:component-scan base-package="com.**"/> <!-- 配置视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> </bean> <!-- 国际化配置 --> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <property name="basename" value="messages"/> <!-- <property name="basenames"> <array> <value></value> </array> </property> --> </bean> <!-- 异常映射配置 --> <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="defaultErrorView" value="/error/error"/> <property name="defaultStatusCode" value="500"/> <property name="exceptionMappings"> <props> <prop key="java.sql.SQLException">/error/500</prop> </props> </property> <property name="warnLogCategory" value="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"/> </bean> </beans>
(4) 创建Controller
package cn.lazyfennec.mvc.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class MyController { @GetMapping("/index") public String index() { return "hello world"; } }
(5) 部署项目到tomcat

1

2

3

4

5

(6) 访问指定地址进行测试

6

2. SpringBoot方式
(1) 查看pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.8.BUILD-SNAPSHOT</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>cn.lazyfennec</groupId> <artifactId>springBootDemo</artifactId> <version>1.0.0-SNAPSHOT</version> <name>springBootDemo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ... 省略部分内容
(2) 创建controller

这里可以类似上方的mvc模式

(3) 运行并且进行测试

可以看到上方的两种方式的比较,SpringBoot的方式比较简单,非常快速,避免了很多的配置,并且无需配置tomcat相关的内容。


Maven工程使用SpringBoot
(1) pom.xml中加入以下内容
  • dependencyManagement
<dependencyManagement> <dependencies> <dependency> <!--从SpringBoot导入依赖关系管理--> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.1.3.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
  • dependencies
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
(2) 创建启动类
package cn.lazyfennec; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication//由本注解指定启动类 public class SpringBootDemoApplication { public static void main(String[] args) { SpringApplication.run(SpringBootDemoApplication.class, args); } }
(3) 创建Controller
package cn.lazyfennec.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class MyController { @GetMapping("/index") public String index() { return "hello world"; } }

运行及打包

1.通过IDEA运行main方法

  1. maven插件运行: mvn spring-boot:run,需要添加spring-boot-maven-plugin到我们的pom.xml文件中

3.创建可执行的jar,需要添加spring-boot-maven-plugin到我们的pom.xml文件中

<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
  • 打包命令: mvn package
  • 执行命令: java -jar xxx.jar
  • 注意事项: jar文件生成在target目录下,**..jar.original这个文件一般很小,这是打包可执行jar文件之前的原始jar

一些需要注意的东西
  • 程序入口: Main方法
@SpringBootApplication//由本注解指定启动类 public class SpringBootDemoApplication { public static void main(String[] args) { SpringApplication.run(SpringBootDemoApplication.class, args); } }
  • SpringBoot中通用的约定
  1. 注解扫码的包目录basePackage为启动类Main函数入口所在的包路
  2. 配置文件约定是classpath目录下的application.yml或者application.properties
  3. web开发的静态文件放在classpath,访问的顺序依次是:
    /META-INF/resources -> resources -> static -> public
  4. web开发中页面模板,约定放在classpath目录,/templates/目录下

AI大模型学习福利

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。


因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

四、AI大模型商业化落地方案

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/16 6:13:35

软件测试基础篇

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、软件测试的生命周期回顾&#xff1a;需求分析、计划、设计、编码、测试、运行维护软件测试的生命周期&#xff1a; 需求分析→测试计划→ 测试设计→ 测试开…

作者头像 李华
网站建设 2026/3/13 14:03:14

I2C协议传输距离限制原因:物理层衰减深度剖析

I2C为何走不远&#xff1f;揭秘信号“腿短”的物理真相你有没有遇到过这种情况&#xff1a;在开发板上调试得好好的I2C通信&#xff0c;传感器读数稳定、时序清晰。可一旦把线拉长到一米开外&#xff0c;甚至只是多挂了几个设备&#xff0c;总线就开始丢ACK、采样错乱&#xff…

作者头像 李华
网站建设 2026/3/14 2:33:23

Meta-Llama-3-8B-Instruct优化技巧:显存占用降低50%

Meta-Llama-3-8B-Instruct优化技巧&#xff1a;显存占用降低50% 1. 引言 1.1 背景与挑战 Meta-Llama-3-8B-Instruct 是 Meta 在 2024 年 4 月发布的中等规模指令微调模型&#xff0c;凭借其 80 亿参数、8k 上下文支持和 Apache 2.0 可商用协议&#xff0c;迅速成为本地部署对…

作者头像 李华
网站建设 2026/3/15 9:17:41

全网最全专科生必用AI论文写作软件TOP10测评

全网最全专科生必用AI论文写作软件TOP10测评 2026年专科生AI论文写作工具测评维度解析 随着人工智能技术的不断发展&#xff0c;越来越多的专科生开始借助AI写作工具提升论文撰写效率。然而&#xff0c;市面上的工具种类繁多&#xff0c;功能各异&#xff0c;如何选择一款真正适…

作者头像 李华
网站建设 2026/3/13 18:41:15

文献怎么查:高效查找文献的实用方法与步骤指南

做科研的第一道坎&#xff0c;往往不是做实验&#xff0c;也不是写论文&#xff0c;而是——找文献。 很多新手科研小白会陷入一个怪圈&#xff1a;在知网、Google Scholar 上不断换关键词&#xff0c;结果要么信息过载&#xff0c;要么完全抓不到重点。今天分享几个长期使用的…

作者头像 李华
网站建设 2026/3/18 10:18:10

Qwen3-Reranker-4B进阶教程:自定义指令实现特定任务优化

Qwen3-Reranker-4B进阶教程&#xff1a;自定义指令实现特定任务优化 1. 引言 随着信息检索和自然语言处理技术的不断发展&#xff0c;文本重排序&#xff08;Text Re-ranking&#xff09;在搜索、推荐系统和问答系统中扮演着越来越关键的角色。Qwen3-Reranker-4B 是通义千问系…

作者头像 李华