【springboot 从入门到开发】3.springboot项目介绍

在上一章节,我们已经创建好了一个springboot项目,那么我们先看看这个项目是长什么样子的。

项目目录结构说明:

①:还记得上一章节配置的包路径,就是对应着这个地方。

②:主程序启动类。

③:默认配置文件。

④:maven项目构建配置文件。

1.pom.xml

首先看看maven项目构建配置文件里面都有哪些信息项。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <!-- 此项目继承的项目,指定Spring Boot父 Starter依赖项的版本号。然后,对于其他启动器依赖项,不需要指定Spring Boot版本号 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <!-- 项目组织的唯一标识符 :对应JAVA的包的结构,是main目录里java的目录结构-->
    <groupId>org.liurb</groupId>
    <!-- 项目的唯一标志:项目名-->
    <artifactId>springboot-demo</artifactId>
    <!-- 项目的版本号-->
    <version>0.0.1-SNAPSHOT</version>
    <!-- 项目的名称-->
    <name>springboot-demo</name>
    <!-- 项目的描述-->
    <description>springboot-demo</description>


    <!-- 项目的基本属性配置 -->
    <properties>
        <!-- Java版本-->
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <!-- web应用基本环境配置 -->
        <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>
            <scope>test</scope>
        </dependency>

    </dependencies>


	<!--构建设置,plugins设置构建的插件-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

这里面可以看到一些“starter”的依赖包,那么这些是什么呢?springboot框架又是一个怎么样的框架呢?

Spring Boot 将日常企业应用研发中的各种场景都抽取出来,做成一个个的 starter(启动器),starter 中整合了该场景下各种可能用到的依赖,用户只需要在 Maven 中引入 starter 依赖,SpringBoot 就能自动扫描到要加载的信息并启动相应的默认配置。

众所周知 Spring 应用需要进行大量的配置,各种 XML 配置和注解配置让人眼花缭乱,且极容易出错,因此 Spring 一度被称为“配置地狱”。

为了简化 Spring 应用的搭建和开发过程,Pivotal 团队在 Spring 基础上提供了一套全新的开源的框架,它就是 Spring Boot。

Spring Boot 具有 Spring 一切优秀特性,Spring 能做的事,Spring Boot 都可以做,而且使用更加简单,功能更加丰富,性能更加稳定而健壮。随着近些年来微服务技术的流行,Spring Boot 也成为了时下炙手可热的技术。

Spring Boot 提供了大量开箱即用(out-of-the-box)的依赖模块,例如 spring-boot-starter-redis、spring-boot-starter-data-mongodb 和 spring-boot-starter-data-elasticsearch 等。这些依赖模块为 Spring Boot 应用提供了大量的自动配置,使得 Spring Boot 应用只需要非常少量的配置甚至零配置,便可以运行起来,让开发人员从 Spring 的“配置地狱”中解放出来,有更多的精力专注于业务逻辑的开发。

在springboot没流行前,主流是springmvc + spring + mybatis的年代,配置文件、各种依赖间jar包冲突等情况,真的搞得开发人员焦头烂额的。

springboot的出现,真的是解放了开发人员的额外时间,让他们更专注于业务的开发。而且从当时来看,spring的一个理念就是"约束大于配置",用约束来简化更多的配置。


接下来,我们来看看这个项目都大概引入了哪些依赖包。

点开"External Libraries",发现下面有很多依赖包被引入进来了,但是我们pom.xml文件里面只引入了一个"spring-boot-starter-web",这就是springboot已经帮我们将这个模块所需的依赖和配置都自动配置好了。同时我们配置了父类parent和版本号,这样就能够避免引入了不同版本的依赖导致冲突的情况。

2.主程序启动类

接下来,我们看一下项目的主程序启动类都有什么。

package org.liurb.springboot.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication  //标注这个类是一个springBoot的应用
public class SpringbootDemoApplication {

    public static void main(String[] args) {
        // 让Spring应用启动起来,就是启动spring的主入口
        SpringApplication.run(SpringbootDemoApplication.class, args);
    }

}

 2.1 @SpringBootApplication

注解标记这个类是SpringBoot的主配置类(SpringbootDemoApplication),SpringBoot就运行这个类的main方法来启动SpringBoot应用。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration  
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {undefined
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
 

这一系列的注解在这里就不展开来说明,主要作用就是容器初始化的时候会读取配置类信息到容器中,相当于配置web.xml读取配置文件,有兴趣的同学可以找相关的文章来看。

2.2 SpringApplication.run

SpringApplication.run(主配置类的类对象,main方法的参数),这个功能就像很久以前Java的启动类,args就是启动类参数。

SpringApplication类主要做4个事情


1.推断应用的类型是普通的项目(普通的Java项目)还是Web项目【依据就是看你有没有导入web相关的jar包】


2.查找并加载所有可用初始化器,设置到initializers属性中


3.找出所有的应用程序监听器,设置到listeners属性中


4.推断并设置main方法的定义类,找到运行的主类【这也是我们向run()中传递当前这个类的class对象的原因】

具体的流程,有兴趣的同学可以自行查找相关的资料,这里就不做详细说明。 

3. application.properyies

应该加载的默认配置文件,一般项目中会使用yml文件后缀方式,后续文章中也主要使用yml文件方式进行说明。

Spring Boot支持.properties和.yml形式的配置文件,properties形式配置文件优先级高于yml形式的配置文件。

多环境切换

在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应配置的环境标识,比如:

application-dev.properties:开发环境
application-test.properties:测试环境
application-prod.properties:生产环境

我们在applications.properties文件中可以通过如下设置进行环境配置的切换

#如需要本地开发加载dev配置

spring.profiles.active=dev

在实际的开发使用中,多环境的切换主要使用于数据库链接的配置、redis缓存链接的配置、远程调用api接口的网关域名配置等, 针对不同的环境可以快速的进行切换配置,在实际开发中可以变得更灵活。

具体的配置方式,在后续的文章中会陆续介绍。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

reui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值