您的位置:首页 > 健康 > 养生 > 做网站哪个公司最_企业网站建设报价明细表_软文云_销售的三个核心点

做网站哪个公司最_企业网站建设报价明细表_软文云_销售的三个核心点

2024/10/6 5:55:59 来源:https://blog.csdn.net/weixin_52255395/article/details/141929294  浏览:    关键词:做网站哪个公司最_企业网站建设报价明细表_软文云_销售的三个核心点
做网站哪个公司最_企业网站建设报价明细表_软文云_销售的三个核心点

目录

一、问题展示

二、问题分析 

2.1.端口与Tomcat的关系 

2.2.问题分析 

三、SpringBoot常见知识记录

3.1.SpringBoot项目常用jar包 

3.1.1.必要性jar包 

3.1.2.选择性jar包 

3.2.标签的作用及取值

3.2.1.compile(编译范围)

3.2.2.provided(已提供范围) 

3.2.3.runtime(运行时范围)

3.2.4.test(测试范围) 

3.2.5.system(系统范围) 

3.2.6.import(导入范围) 

3.3.POM文件中, 和  标签

3.4.POM文件中的作用


一、问题展示

         新建的项目,启动后控制台日志如图所示。可以看到SpringBoot版本(2.4.8),JDK 版本(1.8.0),电脑信息和启动用时(0.918s)等信息,但最后出现了:Process finished with exit code 0。

        "Process finished with exit code 0" 是一个常见的消息,表示你的程序或脚本已经成功执行并正常结束了。在大多数操作系统和编程环境中,退出代码(或称为返回码)用于表示程序的执行结果。退出代码 0 通常被约定为“成功”或“没有错误”的标志。 

        值得注意的是,成功执行:这意味着程序按照预期完成了所有任务,没有出现运行时错误或异常情况。而问题是,我需要项目一直启动,而不是启动后即结束,左侧蓝箭头也显示,项目也启动结束了,重新检查后,发现端口信息没找到。正确项目日志如下所示:

        两个图片对比,中间新增了端口的启动日志左侧的蓝色箭头也有变化,显示项目在启动中。

二、问题分析 

2.1.端口与Tomcat的关系 

         由上图图二可知,端口是由Tomcat启动的,在SpringBoot项目中,端口由Tomcat启动的原因与SpringBoot的核心理念和设计方式紧密相关。SpringBoot旨在简化应用的创建、配置和部署过程,而内置Tomcat(或其他嵌入式Servlet容器)是实现这一目标的重要手段之一。而端口由Tomcat启动的原因由以下几点

  1. 嵌入式Servlet容器
    SpringBoot内置了一个嵌入式的Servlet容器(默认是Tomcat),这意味着开发者无需手动下载、安装和配置外部的Servlet容器(如传统的Tomcat服务器),就可以直接运行Web应用。这种方式简化了部署流程,使得开发者只需一个“可执行的”JAR或WAR文件即可快速部署应用。

  2. 自动配置
    SpringBoot的自动配置特性会检查类路径上的依赖,并自动配置应用。当加入spring-boot-starter-web依赖时,默认也会加入Tomcat的嵌入式依赖。在SpringBoot的启动过程中,TomcatAutoConfiguration类会被自动应用(如果类路径上存在Tomcat的相关依赖且没有其他Servlet容器配置),从而创建一个TomcatServletWebServerFactory,该工厂负责配置、创建和启动Tomcat实例。

  3. 端口配置
    端口的配置可以在application.propertiesapplication.yml文件中指定,也可以在启动应用程序时通过命令行参数来指定。无论是哪种方式,这些配置信息最终都会被TomcatServletWebServerFactory用于配置Tomcat的Connector,Connector是Tomcat中负责监听端口、接收请求的组件。因此,端口的配置实际上是在Tomcat启动之前或启动过程中完成的,并由Tomcat负责监听和响应来自该端口的请求。

  4. 集成SpringMVC
    SpringBoot还通过自动配置类注册了DispatcherServlet,这是SpringMVC的核心组件之一,负责将请求分发给相应的控制器处理。由于Tomcat是SpringBoot内置的Servlet容器,因此DispatcherServlet也运行在Tomcat上,负责处理来自配置端口的HTTP请求。

2.2.问题分析 

        首先,用命令查看本地端口是否被占用

        其次,看配置文件,server.port 的端口配置是在配置文件里的。

        然后,POM排查,文件里  spring-boot-starter-web 我是缺失的,加上下面的POM配置,项目就正常启动了。

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.4.8</version><scope>compile</scope></dependency>

        POM文件完全加载后,从Maven也可以看到,spring-boot-starter-web里是包含Tomcat的。同时也能看到,该jar集成了web和webmvc,所以也能用来处理HTTP请求(比如一个RESTful API或者Web应用)。 

三、SpringBoot常见知识记录

3.1.SpringBoot项目常用jar包 

3.1.1.必要性jar包 

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>2.4.8</version><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.4.8</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.4.8</version></dependency><!--        Mybatis的依赖--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.2</version><exclusions><exclusion><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId></exclusion></exclusions></dependency><!--        Mybatis-plus的依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.7</version></dependency>

3.1.2.选择性jar包 

         Mysql Connector java(如果使用Mysql):如果使用Mysql,可以使用该jar进行数据库连接,并提供驱动。

<!--        数据库连接池的依赖-->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.39</version>
</dependency>

        Spring Boot Starter Data JPA(如果你使用JPA):如果你打算使用JPA来访问数据库,spring-boot-starter-data-jpa是一个很好的选择,它包括了Hibernate, Spring Data JPA, 和数据库连接的依赖。

<dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-data-jpa</artifactId>  <version>2.4.8</version>  
</dependency>

        注意:由于你已经选择了MyBatis Plus,这个依赖可能不是必需的,除非你还打算同时使用JPA。

        日志框架(虽然Spring Boot默认包含):虽然Spring Boot默认使用了Logback作为日志框架,但你可能需要添加其他日志相关的依赖,比如SLF4J的绑定,但通常这不是必需的,因为Spring Boot已经为你处理了。

<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version>
</dependency>

        Spring Boot DevTools(开发时非常有用):在开发过程中,spring-boot-devtools提供了一些有用的功能,比如自动重启和快速的应用上下文重新加载。

<dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-devtools</artifactId>  <scope>runtime</scope>  <optional>true</optional>  
</dependency>

        安全框架(如Spring Security):如果你的应用需要安全功能(如用户认证和授权),你可能需要添加Spring Security的依赖。 

<dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-security</artifactId>  <version>2.4.8</version>  
</dependency>

        缓存框架(如Spring Cache + Redis):如果你的应用需要缓存支持,可以考虑添加Spring Cache的抽象层,并可能使用Redis作为缓存实现。 

<dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-cache</artifactId>  <version>2.4.8</version>  
</dependency>  <!-- 如果使用Redis作为缓存 -->  
<dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-data-redis</artifactId>  <version>2.4.8</version>  
</dependency>

        根据项目需求,可能还需要添加其他第三方库,比如消息队列(RabbitMQ, Kafka等)、搜索引擎(Elasticsearch)、邮件发送(Spring Boot Starter Mail)等,需要的依赖将完全取决于你的项目需求。

3.2.<scope>标签的作用及取值

        在Maven的pom.xml文件中,<scope>标签用于指定依赖项的作用范围。它决定了依赖项在项目的哪个阶段是可用的,以及是否会被打包进最终的构建产物(如JAR或WAR文件)中。<scope>有几种不同的值,每种值对应不同的用途和行为。以下是几种常见的<scope>值及其区别:

3.2.1.compile(编译范围)

        默认值:如果不指定<scope>,则默认为compile。
        用途:这个范围的依赖项在项目的编译、测试、运行阶段都是可用的。它们会被打包进最终的构建产物中。
        示例:像spring-boot-starter-web这样的依赖,因为它们是项目运行所必需的,所以通常设置为compile范围。 

3.2.2.provided(已提供范围) 

        用途:这个范围的依赖项在编译和测试阶段可用,但在运行时不需要打包进去,因为假设容器或JDK已经提供了这些依赖项。
        示例:在开发Web应用时,Servlet API和JSP API的依赖通常被设置为provided,因为Web服务器(如Tomcat)已经提供了这些库。 

3.2.3.runtime(运行时范围)

        用途:这个范围的依赖项在编译时不是必需的,但在运行和测试阶段需要。它们会被打包进最终的构建产物中。
        示例:JDBC驱动实现通常被设置为runtime范围,因为它们在编译时不是必需的,但在运行时是需要的。 

3.2.4.test(测试范围) 

        用途:这个范围的依赖项仅在测试编译和运行阶段可用,不会被打包进最终的构建产物中。
        示例:JUnit和Mockito等测试框架的依赖通常被设置为test范围。 

3.2.5.system(系统范围) 

        用途:这个范围与provided类似,但是你需要通过systemPath元素显式地指定依赖项的路径。由于它绕过了Maven的依赖解析机制,因此不推荐使用,除非在特殊情况下。
        示例:通常不推荐使用,因为它破坏了Maven的依赖管理原则。 除非,别人自定义了jar,然后在小组开发过程中,供大家集体使用这种特殊情况。

<dependency><groupId>x509</groupId><artifactId>x509</artifactId><version>1.0</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/lib/x509.jar</systemPath>
</dependency>

3.2.6.import(导入范围) 

        用途:这个范围仅用于<dependencyManagement>部分,用于导入另一个POM文件中的<dependencyManagement>配置,从而允许你跨多个POM文件共享一致的依赖配置。
        示例:在Spring Boot项目中,spring-boot-dependencies POM通过<dependencyManagement>和<scope>import</scope>被导入,以提供对Spring Boot依赖项的集中管理。 

3.3.POM文件中<groupId><artifactId>和 <version> 标签

        在Maven的POM(Project Object Model)文件中,<groupId>, <artifactId>, 和 <version> 这三个标签是项目的基本坐标(coordinates),它们共同定义了Maven项目在仓库中的唯一位置。下面是每个标签的具体作用:

        <groupId>:
        作用:定义了项目属于哪个实际的Maven项目对象模型(POM)的组。这个组通常基于公司的域名反写来命名,以确保唯一性。例如,com.bypay 表示这个项目是由 bypay.com 这个公司或组织开发的。
        重要性:<groupId> 是项目坐标的重要部分,它帮助Maven识别项目所属的组或公司,以便在仓库中正确地组织和查找项目。

         <artifactId>:
        作用:定义了项目在所属组(<groupId>)中的唯一ID。这通常是项目的名称或模块名。例如,xmgj-reconciliation 可能表示这个项目或模块是关于“xmgj”的“reconciliation”(对账)功能。
        重要性:<artifactId> 与 <groupId> 一起,唯一地标识了一个Maven项目或模块。这允许Maven从仓库中精确地下载或引用该项目。

         <version>:
        作用:定义了项目的当前版本。版本号通常是按照某种约定(如主版本号.次版本号.修订号[-快照/里程碑])来编写的,以反映项目的不同发布阶段和兼容性。例如,1.0-SNAPSHOT 表示这是一个处于开发阶段(快照)的1.0版本。
        重要性:<version> 允许Maven管理项目的不同版本,确保依赖的精确性和兼容性。它还允许项目在开发过程中进行迭代和发布,而不会影响其他依赖该项目的项目。

        综上所述,<groupId>, <artifactId>, 和 <version> 这三个标签共同构成了Maven项目的唯一标识,使得Maven能够准确地定位、下载和构建项目及其依赖。

3.4.POM文件中的<build>作用

        在pom.xml文件中的<build>部分,通常包含了与构建项目相关的配置。这些配置可以指定如何编译源代码、处理资源文件、插件的配置等。对于Spring Boot项目来说,<build>部分通常会特别关注于Spring Boot Maven插件(spring-boot-maven-plugin)的配置,因为它负责将项目打包成可执行的jar或war文件。以下是一个基本的<build>部分示例,该示例展示了在Spring Boot项目中常见的配置:

<build>  
<!--  项目打成jar包后的名称,有以下两种方式,可直接命名,也可以引用命名     -->
<!--  <finalName>xmgj-reconciliation</finalName>--><finalName>${project.artifactId}</finalName><plugins>  <!-- Spring Boot Maven 插件 -->  <plugin>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-maven-plugin</artifactId>  <!-- 这里通常不需要指定版本号,因为Spring Boot的starter-parent已经管理了它 -->  <!-- 插件配置 -->  <configuration>  <!-- 可选的配置项,比如指定mainClass,但通常不是必需的,因为Spring Boot插件可以自动找到 -->  <!-- <mainClass>com.example.MyApplication</mainClass> -->  <!-- 其他可能的配置,如打包时排除某些文件或目录 -->  <!-- <excludes>  <exclude>  <groupId>org.group</groupId>  <artifactId>artifact</artifactId>  </exclude>  </excludes> -->  <!-- 启用/禁用重新打包 -->  <!-- <repackage>true</repackage> -->  <!-- 其他插件特定的配置项 -->  </configuration>  <!-- 插件执行的阶段,通常不需要指定,因为Spring Boot插件默认绑定到了一些生命周期阶段 -->  <!-- <executions>  ...  </executions> -->  </plugin>  <!-- 其他插件配置,如编译插件、资源插件等 -->  <!-- version:指定插件版本,但Spring Boot的starter-parent可能已经管理了它 --> <!-- source:Java源代码版本 --> <!-- target:目标Java版本 -->  <!--  <plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-compiler-plugin</artifactId>  <version>2.4.8</version> <configuration>  <source>1.8</source>   <target>1.8</target> </configuration>  </plugin>  -->  </plugins>  <!-- 其他构建相关的配置,如资源文件配置 -->  <resources>  <resource>  <directory>src/main/resources</directory>  <!-- 可选的配置,比如过滤文件等 -->  <!-- <filtering>true</filtering> -->  </resource>  </resources>  
</build>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com