Spring Boot 简介

SpringBoot

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突(如Maven整合了所有的jar包),以及引用的不稳定性等问题得到了很好的解决。

SpringBoot主要特性

1、简化Maven配置。springboot提供了一系列的starter用来简化maven依赖。如:常用的spring-boot-starter-web、spring-boot-starter-tomcat等;

2、提供了POM文件,能够非常方便的进行包管理

3、自动配置:springboot会根据我们项目中类路径的jar包,为jar包的类进行自动装配bean;

4、内嵌servlet容器,降低了对环境的要求,可用命令直接执行项目;

5、应用监控。springboot提供了基于HTTP、ssh、telnet对运行时的项目进行监控。springboot提供了actuator组件,只需要在配置中加入spring-boot-starter-actuator依赖,为了保障安全性,一般需要加入security依赖输入验证信息即可。

6、遵循习惯优于配置的原则。使用springboot我们只需要很少的配置,大多数使用默认配置即可

项目建立注意

1、Spring boot DevTools:它最重要的功能就是自动应用代码更改到最新的应用程序上,只要类路径上的文件发生更改,使用的应用程序就会自动重新启动。即实现热部署,方便开发过程中调试代码。

2、Lombok:它的功能是减少实体类的重复代码书写,如:get、set、toString等方法。Lombok的一个@Data注解,即可提供getter、setter、equals、canEqual、hashCode、toString方法。

IDE中需要安装Lombok插件才可以使用,否则在调用实体类中的方法时会提示没有此方法。

POM.xml

POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<!-- pom模型版本 -->
    <modelVersion>4.0.0</modelVersion>
    <!-- 项目组织的唯一标识符 :对应JAVA的包的结构,是main目录里java的目录结构-->
    <groupId>com.yc.springcloud812</groupId>
    <!-- 项目的标识,通常就是项目的名称,groupId 和 artifactId 一起定义了 项目在仓库中的位置-->
    <artifactId>microservice</artifactId>
    <!-- 打包方式 (pom,war,jar)-->
    <packaging>pom</packaging>
    <!-- 项目版本号-->
    <version>0.0.1-SNAPSHOT</version>
    <!-- 项目名-->
    <name>microservice</name>
    <!-- 项目的描述, Maven 作用于产生的文档 -->
    <description>Demo project for Spring Boot</description>


<!-- POM文件常量定义区,在文件中可以直接引用,如版本、编码等。使用方式${java.version}-->
    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- 编译字符编码为utf-8 -->
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><!-- 输出字符编码为UTF-8  -->
        <java.version>1.8</java.version>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
        <spring-cloud.version>Greenwich.SR6</spring-cloud.version>
        <spring-boot.version>2.1.17.RELEASE</spring-boot.version>
    </properties>


<!--该项目下子项目的项目名(artifactId)-->
    <modules>
        <module>microservice-api</module>
        <module>microservice-provider</module>
        <module>microservice-consumer</module>
	    <module>microservice-consumer2</module>
        <module>microservice-security</module>
        <module>microservice-eureka</module>
	    <module>microservice-eureka2</module>
	    <module>microservice-eureka3</module>
	    <module>microservice-provider4</module>
	    <module>microservice-provider5</module>
	    <module>microservice-consumer-feign</module>
        <module>microservice-interface</module>
    </modules>

    <!-- 会实际下载jar包,子项目会继承这些依赖  -->
    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>  <!-- 标记依赖是否可传递,标记为true表示可以传递依赖,以避免包冲突 -->
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>


<!-- 
optional:可选依赖。标记依赖是否可传递,默认值false。
scope:用来指定当前包的依赖范围
compile(编译范围),是默认的范围,编译范围依赖在所有的classpath中可用,同时它们也会被打包。
provided(已提供范围),只有在当JDK或者一个容器已提供该依赖之后才使用。
runtime(运行时范围),在运行和测试系统的时候需要。
test(测试范围),在一般的 编译和运行时都不需要。
system(系统范围),与provided类似
type:  用于声明依赖的类型
 -->

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>    <!-- type为pom,则scope要为import -->
            </dependency>
            <!--多增加一个 druid数据库联接池 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.0.31</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.3</version>
            </dependency>
            <dependency>
                <groupId>tk.mybatis</groupId>
                <artifactId>mapper-spring-boot-starter</artifactId>
                <version>2.0.4</version>
            </dependency>
            <dependency>
                <groupId>com.yc.springcloud812</groupId>
                <artifactId>microservice-api</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>com.yc.springcloud812</groupId>
                <artifactId>microservice-security</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>com.yc.springcloud812</groupId>
                <artifactId>microservice-interface</artifactId>
                <version>1.0.0</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
<!--
1、当计算传递依赖时, 从依赖构件列表里,列出被排除的依赖构件集。
即告诉maven你只依赖指定的项目,不依赖项目的依赖。
此元素主要用于解决版本冲突问题 
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>

2、 dependencyManagement对所依赖jar包进行版本管理, 
而dependencies中的jar直接加到项目中. 
dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声
明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有
在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且
version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项
目中指定的jar版本.
-->


<!--构建项目的信息 -->
    <build>
    <!--构建工具插件管理-->
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.2.2.RELEASE</version>
            </plugin>
        </plugins>
    </build>

</project>

======================

scope详解

<scope>import</scope>

使用import scope可以解决maven继承(单)问题
在Maven的POM文件的parent标签一般都是继承spring-boot-starter-parent。
而如果想要多个继承,可以建立一个封装的pom来管理一些依赖packaging=pom打包,相应的pom文件需要使用某些依赖时,在dependencyManagement下引入包含封装pom的项目包,scope=import,type=pom。然后在dependencies下引入相关依赖可以不指定版本(封装的pom文件已经指定)

配置文件

Spring Boot 的配置文件有两种不同的格式,一种是 properties ,另一种是 yml 。其中默认的配置文件名为:application

application配置文件可以写在Spring Boot项目四个不同的位置,位置如下(序号为项目读取优先级,没有config目录可自建):

1、项目根目录下的config目录中

2、项目根目录下

3、classpath(即src.main.resources)下的config目录中

4、classpath(即src.main.resources)目录下

//如果引入其他配置文件
//注意:@PropertySource读取的是properties 文件
//@PropertySource,@ConfigurationProperties可引入配置文件,并将配置文件中的值注入到该类的属性中
@PropertySource("classpath:test.properties")
@ConfigurationProperties(prefix = "test")
public class Test{

}

待续===============

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值