SpringBoot01

一、SpringBoot项目中常见的依赖

1.1、spring-boot-starter-parent

        这个是SpringBoot项目必须导入的依赖,这个父模块内部定义了springboot整合各个技术的依赖版本,降低版本的冲突。

<parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.6.7</version>
</parent>

1.2、spring-boot-starter-web和spring-boot-starter-test 

        spring-boot-starter-web是springboot项目web开发必须的依赖,spring-boot-starter-test是单元测试的依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency>
</dependencies>

1.3、spring-boot-maven-plugin 

        Springboot项目使用maven进行cleanpackageinstall等操作时必须添加的依赖,否则会在执行上面的操作时报错。 

   <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

二、 使用配置文件切换环境

2.1、application.properties是默认配置文件

        我们可以使用配置文件来对springboot项目进行环境切换,启动程序时如果没有指定使用哪个profile配置,那么就会默认使用application.properties配置文件,这是默认配置文件。

        要想使用配置文件切换环境,配置文件必须是application-开头。

        现在以application.propertiesapplication-develop.propertiesapplication-production.properties为例进行操作

        application.properties端口号为:8080

        application-develop.properties端口号为:8081

        application-production.properties端口号为:8082

        

         目前在application.properties只设置端口号为8080,不指定使用哪个profile配置,并启动程序。结果如下:

        可以看到没有指定使用哪个profile配置,那么就会默认使用application.properties配置文件,所以端口为8080

2.2、指定profile配置文件

        在application.properties配置文件中可以指定profile配置文件。通过在application.properties中加上spring.profiles.active=production即可,表示使用application-production.properties配置文件。

   

 启动程序。结果如下:

        可以看到可以通过在application.properties默认配置文件中,加上spring.profiles.active=production来指定配置文件。指定配置文件的前提是配置文件是以application-开头

2.3、通过Idea指定配置文件

2.3.1、Edit Configuration

                选中要更改的springboot项目,并选择Edit Configuration

        

2.3.2、Active profiles中指定配置文件

        可以在Active profiles中指定配置文件,如下图指定application-develop.properties配置文件,并且使用这种方式比2.2中通过配置文件指定profile优先级要高。

 启动程序。结果如下:

        可以看到2.2中指定的是application-production.properties,再不改动2.2中配置文件的情况下,在2.3中指定application-develop.properties,最后从结果中可以看到运行的是application-develop.properties,所以在Idea中指定配置文件的优先级是高于通过application.properties配置文件。

2.4、配置文件的优先级

        Springboot项目常见的配置文件有:properties、yml、yaml

        配置文件优先级: properties > yml > yaml 

2.5、配置文件没有被springboot识别怎么办 (配置文件成粉红色)

        有时候配置文件会变成粉红色,没有被SpringBoot项目识别,如下图。

        如果配置文件本身没有问题的情况下,实际上是不影响程序的运行。但是要想解决的话,方式如下:

三、SpringBoot内置了Tomcat服务器

        Spring Boot 不再需要将应用部署到 Tomcat 服务器就能运行,这是因为它内嵌了 Tomcat 服务器。

        传统 web 程序和Spring Boot web 程序的区别:

        传统 web 程序,打 war 包,部署至 Tomcat,是 Tomcat 中运行了 Spring 程序 。

        Spring Boot web 程序,打 jar 包,启动内嵌的 Tomcat,是 Spring 程序驱动了 Tomcat      

        优点:控制力更强,像 Filter 等都可以使用 Spring 依赖注入等功能      

        优点:部署也更为方便,不需要单独安装 tomcat,有 java 运行环境即可      

        缺点:jar 包不支持 jsp

    

        将web 容器切换成jetty        

四、@ServletComponentScan 就可以将 Filter、Servlet 等纳入 Spring 管理 

  启动引导类中的代码:

 在启动引导类上加了  @ServletComponentScan  注解  

package com.itboy;import com.itboy.Import.MyImportSeletor;
import org.example.config.BrandAutoConfiguration;
import org.example.config.UserAutoConfiguration;
import org.example.pojo.Brand;
import org.example.pojo.User;
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Import;/*** * */
@SpringBootApplication
@ServletComponentScan //默认扫描引导类所在包及其子包下的servlet组件
public class SpringBootPlusApplication {public static void main(String[] args) {ConfigurableApplicationContext app = SpringApplication.run(SpringBootPlusApplication.class, args);}
}

对应的Filter

package com.itboy.filter;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;@WebFilter("/*")
public class FilterDemo implements Filter {public void init(FilterConfig config) throws ServletException {}public void destroy() {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {System.out.println("doFilter运行了..........");chain.doFilter(request, response);}
}

通过页面访问会发现Filter执行了

        说明在启动引导类上添加 @ServletComponentScan  注解就可以将 Filter、Servlet 等纳入 Spring 管理 

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

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

相关文章

玩转未来:Sui游戏峰会将于3月19日亮相GDC

Sui将在今年三月份的旧金山游戏开发者大会&#xff08;Game Developer Conference, GDC&#xff09;上推出其首个重大游戏活动&#xff0c;展示其为独立游戏到3A游戏提供动力&#xff0c;并为游戏开发人员开启吸引新玩家参与的能力。“Play Beyond&#xff1a;Sui游戏峰会”&am…

XSS靶场练习(pikachu和dvwa)

Pikachu靶场xss练习 反射型xss(get) 输入123发现被直接插入到了html中&#xff0c;而且输入框有字符长度限制 在url中构造payload:<script>alert(123)</script> 反射型xss(post) 查看源码发现登录界面没有任何机会&#xff1b;登录后输入123发现和xss(get)写入位…

css display 左右对齐 技巧

.list_number{ display: flex; } .list_name_number{ width:100px; } //左边固定width .list_name_type{ //右边给flex:2 自动撑开 flex:2; }

Flink 集成 Debezium Confluent Avro ( format=debezium-avro-confluent )

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,京东购书链接:https://item.jd.com/12677623.html,扫描左侧二维…

公司内网虚拟机中穿透服务器Coturn的搭建

1. 写在前面 coturn服务器的搭建文章已经非常多&#xff0c;但是对于对linux不熟悉的人来说排查错误的文章不多&#xff0c;此篇文章把我这次搭建过程以及如何排查问题做一个梳理我这里是在oracle vm虚拟机中搭建安装的ubuntu&#xff0c;通过H3C路由器映射到外网以下介绍我只…

【Docker】实战案例 - CI/CD

作者主页&#xff1a; 正函数的个人主页 文章收录专栏&#xff1a; Docker 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01; CI/CD 持续集成(Continuous integration) 是一种软件开发实践&#xff0c;每次集成都通过自动化的构建&#xff08;包括编译&#xff0c;发…

openssl3.2/test/certs - 072 - EE SHA256

文章目录 openssl3.2/test/certs - 072 - EE SHA256概述笔记END openssl3.2/test/certs - 072 - EE SHA256 概述 openssl3.2 - 官方demo学习 - test - certs 笔记 /*! * \file D:\my_dev\my_local_git_prj\study\openSSL\test_certs\072\my_openssl_linux_doc_072.txt * \n…

Java项目:SSM框架基于spring+springmvc+mybatis实现的心理预约咨询管理系统(ssm+B/S架构+源码+数据库+毕业论文)

一、项目简介 本项目是一套ssm823基于SSM框架的心理预约咨询管理系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&am…

车用OS赛道研究:10%渗透率拐点,中国本土供应商突围策略

车用OS赛道当前正站在发展节点上&#xff0c;国内玩家也正基于现实情况进行突围。 智驾、座舱域控渗透率均处于快速增长期的拐点&#xff08;以10%渗透率界&#xff09;。高工智能汽车研究院监测数据显示&#xff0c;2023年1-9月&#xff0c;国内&#xff08;不含进出口&#…

【软件测试】学习笔记-构建并执行 JMeter 脚本的正确姿势

有些团队在组建之初往往并没有配置性能测试人员&#xff0c;后来随着公司业务体量的上升&#xff0c;开始有了性能测试的需求&#xff0c;很多公司为了节约成本会在业务测试团队里选一些技术能力不错的同学进行性能测试&#xff0c;但这些同学也是摸着石头过河。他们会去网上寻…

leetcode560和为k的子数组

class Solution { public:int subarraySum(vector<int>& nums, int k) {unordered_map<int,int>mp;mp[0]1;int count0,pre0;for(auto& x:nums){prex;if(mp.find(pre-k)!mp.end()){countmp[pre-k];}mp[pre];}return count;} }; 一个超级好的思路&#xff0…

Ubuntu 下进行系统备份与迁移

经常一个项目做到一半&#xff0c;结果系统崩溃了&#xff0c;每次都得重装系统&#xff0c;因此&#xff0c;就在想怎么才能够直接在ubuntu系统备份现有的系统呢?找了很多教程&#xff0c;发现都需要安装软件&#xff0c;这些方法都比较复杂&#xff0c;后来终于找到一种简单…

C++提高编程——STL:deque容器、stack容器和queue容器

本专栏记录C学习过程包括C基础以及数据结构和算法&#xff0c;其中第一部分计划时间一个月&#xff0c;主要跟着黑马视频教程&#xff0c;学习路线如下&#xff0c;不定时更新&#xff0c;欢迎关注。 当前章节处于&#xff1a; ---------第1阶段-C基础入门 ---------第2阶段实战…

C++实用教程(四):面向对象核心多态 笔记

推荐B站视频&#xff1a;C现代实用教程(四):面向对象核心多态_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV15v4y1M7fF/?spm_id_from333.999.0.0&vd_sourcea934d7fc6f47698a29dac90a922ba5a3 本项目通用的tasks.json文件和launch.json tasks.json {"versi…

git常见命令

1、常用命令记录 1&#xff09;切换分支 git checkout 分支名2&#xff09;查看分支 查看远程分支 git branch -r 查看所有分支包括本地分支和远程分支 git branch -a3&#xff09;合并分支 git merge 来源分支4&#xff09;删除分支 删除本地分支&#xff1a;git branch …

让B端管理软件既美观又实用的解决方案来了

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验&#xff01;希望我的分享能帮助到您&#xff01;如需帮助可以评论关注私信我们一起探讨&#xff01;致敬感谢感恩&#xff01; 让B端管理软件既美观又实用的解决方案来了 在当今数字化时代&#xff0c;B端管理软件已…

解密神经网络:深入探究传播机制与学习过程

解密神经网络&#xff1a;深入探究传播机制与学习过程 文章目录 解密神经网络&#xff1a;深入探究传播机制与学习过程一、引言二、基础理论1. 人工神经元&#xff1a;构建块的定义2. 神经网络的结构3. 激活函数的作用 三、前向传播1. 数据流动&#xff1a;输入到输出2. 加权和…

安泰ATA-4014高压功率放大器在超声马达驱动电路设计中的应用

本文将与大家分享&#xff0c;ATA-4014高压功率放大器在超声马达驱动电路设计和制作中的应用&#xff0c;希望能对各位工程师有所帮助与启发。 1引言 超声波马达又称超声电机(ultrasonicmotor&#xff0c;简称USM)20世纪80年代才诞生的一种全新概念电机种类.超声电机采用与传统…

Linux之buildroot

Buildroot 是用于生成嵌入式Linux系统的完整构建工具链和环境。 Buildroot 通过自动化编译过程&#xff0c;可以帮助你从零开始构建一个自定义的、优化的嵌入式Linux系统&#xff0c;该系统通常包括以下几个关键部分&#xff1a; 交叉编译工具链&#xff1a;Buildroot会自动构建…

网络端口与 IP 地址有什么区别?

网络端口和IP地址是计算机网络中两个非常重要的概念&#xff0c;它们在实现网络通信和数据传输中扮演着不同的角色。 IP地址 IP地址&#xff08;Internet Protocol Address&#xff09;是用于标识网络上设备的唯一地址。它是一个由数字组成的标识符&#xff0c;用于在网络中准…