SpringBoot01

本文详细介绍了SpringBoot项目中常见的依赖如spring-boot-starter-parent、web和test模块,以及如何使用配置文件进行环境切换,包括默认配置、指定profile和IDEA中的配置管理。此外,还提到SpringBoot内嵌Tomcat服务器和如何通过@ServletComponentScan注解管理Filter和Servlet。
摘要由CSDN通过智能技术生成

一、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.2.1、配置文件之间的覆盖关系

application.properties配置文件中指定端口号为8080,并且指定使用develop 配置文件

application-develop.properties配置文件中,只指定虚拟路径为itboy

运行后发现:

端口号为8080,虚拟路径为itboy

 总结:

1、指定的配置文件中(application-develop.properties)有的内容按照指定的配置文件中来(application-develop.properties)

2、指定的配置文件中(application-develop.properties)中没有,原配置文件(application.properties)中有,按照原配置文件(application.properties)来。

3、指定的配置文件(application-develop.properties)和原配置文件(application.properties)中同时存在的内容,按照指定的配置文件(application-develop.properties)中的内容。(指定的配置文件会覆盖掉原配置文件)

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项目识别,如下图。

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

2.6、配置文件中虚拟路径的使用

配置文件中加上itboy的虚拟路径,端口号为8080

controller中一级路径为sayHello 

加上虚拟路径后,最终的访问路径为:

http://localhost:8080/itboy/sayHello

三、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() {
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {

        System.out.println("doFilter运行了..........");

        chain.doFilter(request, response);
    }
}

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值