SpringBoot学习笔记01(原理与环境的配置)

什么是SpringBooot?

简化spring应用而开发的一个框架

将整个spring技术栈进行了整合

将J2EE的开发进行一站式解释

作用:Spring Boot来简化Spring应用开发,约定大于配置,
去繁从简, just run就能创建一个独立的,产品级别的应用
背景:
J2EE笨重的开发、繁多的配置、低下的开发效率、
复杂的部署流程、第三三方技术集成难度大。
解决:
"Spring全家桶”时代。
Spring Boot→J2EE-站式解决方案
Spring Cloud→分布式整体解决方案

优点:
快速创建独立运行的Spring项目以及与主流框架集成
使用嵌入式的Servlet容器,应用无需打成WAR包(打成jar包即可运行)

starters自动依赖与版本控制(例如调用redis的starter)

大量的自动配置,简化开发,也可修改默认值
无需配置XML ,无代码生成,开箱即用
准生产环境的运行时应用监控
与云计算的天然集成

什么是微服务

**时间与作者:**2014年,Martin Fowler

传统服务模式的流程

在这里插入图片描述

**优点:**易于开发,测试,部署,拓展。

**缺点:**在修改时牵一发而动全身,且软件需求的日益增长,可能无法负担。

**原理:**将war包放在tomcat里进行运行,若是单个tomcat性能不够,则多复制几份,通过负载均衡机制进行运行。

微服务

概念:一个应用便是一组小型服务,可通过http的方式进行互通

每一个功能元素最终都是一个可独立替换和独立升级的软件单元

特点:

​ 微服务是-一种架构风格
​ 每个应用拆分为一组小型服务
​ 每个服务运行在自己的进程内,也就是可独立部署和升级
​ 服务之间使用轻量级HTTP交互
​ 服务围绕业务功能拆分
​ 可以由全自动部署机制独立部署
​ 去中心化,服务自治。服务可以使用不同的语言、不同的存储技术

微服务分布式化遇到的困难:远程调用 服务发现 负载均衡 服务容错 配置管理 服务监控 链路追踪 日志管理 任务调度

分布式解决方案:springboot+springcloud

环境的配置

使用springboot,首先得懂得环境的配置

系统要求(此为springboot2的要求)

Java 8 & 兼容java14 .

Maven 3.3+

idea 2020.1

maven相关配置

找到maven安装目录下conf文件夹下的setting.xml,进行如下修改

<mirrors>
      <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
      </mirror>
  </mirrors>
 
  <profiles>
         <profile>
              <id>jdk-1.8</id>
              <activation>
                <activeByDefault>true</activeByDefault>
                <jdk>1.8</jdk>
              </activation>
              <properties>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>1.8</maven.compiler.target>
                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
              </properties>
         </profile>
  </profiles>

在创建maven工程时,对pom.xml进行如下修改

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
    </parent>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

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

    </dependencies>
第一个程序的实现

首先是创建主程序类

/**
 * 主程序类
 * @SpringBootApplication:这是一个SpringBoot应用
 */
@SpringBootApplication
public class MainApplication {

    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class,args);
    }
}

再创建controller包,创建控制器类与方法

/*  @ResponseBody  代表该类下的方法的返回值都是直接给浏览器
    @Controller
    */
@RestController/*打开源码我们可以发现,这其实就是上两个注释的合并*/
public class ControllerTest1 {
    @RequestMapping("/hello")
    public String handle01(){
        return "Hello,Spring Boot 2";
    }
}

直接运行main方法

运行成功后在浏览器输入http://localhost:8080/hello

便可直接访问到定义的hello方法
在这里插入图片描述

配置文件与jar打包

配置文件

在resources目录下,建立application.properties,可在其下进行各项属性的配置

在这里插入图片描述

eg:在该文件下加入server.port=80 则下一次启动服务器,使用的端口便变成了80端口。

项目的打包

  <!--在项目部署时打包成jar包-->
  <packaging>jar</packaging>

<build>
    <pluginManagement>
    <plugins>
<!--将程序打包成jar所需的插件,该jar包可以直接执行 -->
        <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
            </plugins>
    </pluginManagement>
  </build>

随后进行打包操作
在这里插入图片描述
在这里插入图片描述

该jar可通过cmd直接运行,效果与项目效果相同 记得取消掉cmd的快速编辑模式

总结:简化了配置(application.properties),测试(直接运行main方法),部署(一键打包成jar,在目标服务器运行即可)
自动配置与依赖管理
依赖管理
依赖管理
    <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.3.4.RELEASE</version>
    </parent>

    依赖管理的父项目
     <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.3.4.RELEASE</version>
      </parent>
      进入查看便可发现其中几乎声明了所有开发中常用的依赖的版本号,所以在其仲裁下的dependency中无需输入版本号


	如果springboot自动装配给的版本不合适,可以手动进行版本的变更
	利用maven的就近优先原则 
	<properties>
	   <mysql.version>5.1.43</mysql.version>
	  </properties>

starter(场景启动器)

1、spring-boot-starter-* : 官方的starter,*代表符合的任意词
2、只要引入starter,这个场景的所有常规需要的依赖都会自动引入
3、在springboot关于starter的介绍中,我们可以知道SpringBoot所有支持的场景l链接

4.自定义starter的规范:thirdpartyproject-spring-boot-starter.

5.*-spring-boot-starter: 第三方为我们提供的简化开发的场景启动器。

6、所有场景启动器最底层的依赖
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter</artifactId>
  <version>2.3.4.RELEASE</version>
  <scope>compile</scope>
</dependency>
自动配置

自动配好SpringMVC

  • 引入SpringMVC全套组件

  • 自动配好SpringMVC常用组件(功能)

自动配好Web常见功能,如:字符编码问题

  • SpringBoot帮我们配置好了所有web开发的常见场景

默认的包结构

  • 主程序所在包及其下面的所有子包里面的组件都会被默认扫描进来

  • 无需以前的包扫描配置

  • 想要改变扫描路径,@SpringBootApplication(scanBasePackages=“com.fallingwhite”)

  • 或者@ComponentScan 指定扫描路径

@SpringBootApplication
等同于
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.fallingwhite.boot")

各种配置拥有默认值

  • 默认配置最终都是映射到某个类上,如:MultipartProperties

  • 配置文件的值最终会绑定每个类上,这个类会在容器中创建对象

按需加载所有自动配置项

  • 非常多的starter

  • 引入了哪些场景这个场景的自动配置才会开启

  • SpringBoot所有的自动配置功能都在 spring-boot-autoconfigure 包里面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值