SpringBoot学习笔记

SpringBoot 简介

SpringBoot背景相关简介

SpringBoot目的是为了简化Spring应用开发中过于繁琐问题。

Spring推出解决方案

Spring全家桶时代:
SpringBoot→J2EE一站式解决方案
SpringCloud→分布式整体解决方案

SpringBoot优缺点

优点

  • 快速创建独立运行的Spring项目以及主流框架集成。
  • 使用嵌入式的Servlet容器,应用无需打成war包
  • Starters自动依赖以及版本控制
  • 大量的自动配置,简化开发,也可修改默认值
  • 无需XML,无代码生产,开箱就能用
  • 准生产环境的运行时应用监控
  • 与云计算的天然集成

缺点:

  • 入门容易精通难
  • 对于Spring底层内容过分依赖

微服务

2014年,Martin fowler
微服务:是一种架构风格,一个应用应该是一组小型服务。

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

微服务文档

SpringBoot原理简介

1.启动器

spring-boot-starter-web:
spring-boot-starter:spring-boot场景启动器;帮我们导入了web模块正常运行所以来的组件;

spring Boot 将所有的功能场景都抽取出来,做成一格格的starters启动器,只需要在项目里面引入这些starter相关场景的素有依赖都会导入进来,要用什么功能就导入什么场景的启动器。

2.主程序类

package com.ohyes.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
//@ComponentScan("com.ohyes.demo")

public class DemoApplication {

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

}

@SpringBootApplication Spring Boot 应用个标注在某个类上说明这个类时主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用;

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

@SpringBootConfiguration :表示这个类是SpringBoot配置类;
@Configuration表示Spring的配置类

@EnableAutoConfiguration:开启自动配置功能;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {

@AutoConfigurationPackage :自动配置包
类似于@Import(AutoConfigurationPackages.Registrar.class);
Spring的底层注解@Import,给容器导入一个组件;

将主配置类所在包下的所有子包的所有组件扫描到Spring容器中;

@Import(AutoConfigurationImportSelector.class)
给容器中导入自动配置类并将其配置好

SpringBoot从类路径下的保重获取EnableAutoConfiguration指定的值,将这些值导入到自动配置类中,自动配置功能就生效了。

SpringBoot学习笔记_第1张图片
J2EE的整体整合解决方案和自动配置都在
在这里插入图片描述
这个包下面

3. 快速创建的项目中的文件夹功能

  • 主程序自动生成。
  • resources文件夹中的目录结构
    • static:保存所有的静态资源:js、css、images;
    • templates:保存模板页面:(SpringBoot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面)但是可以使用末班引擎(Freemarker,thymeleaf)
    • application:SpringBoot应用的配置文件

二、SpringBoot的配置文件

1.配置文件

SpringBoot使用一个全局配置文件

  • application.properties
  • application.yml

配置文件的作用:修改SpringBoot 自动配置的默认值,SpringBoot在底层会直接配置好。
ymlYAML Ain't Markup Language的缩写,是一个标记语言,一数据为中心,比json、xml更适合做配置语言。

2.yml基本语法

  • key: value:表示一个键值对,必须有空格;

  • 以空格缩进来控制层级关系;只要是左对齐的一列数据,都是统一层级。

  • 属性和值也是大小写敏感。

2.值的写法

字面量:普通的值(数字,字符串,布尔)

key: value:字面直接来写

字符串上不用加上单引号或者双引号;

双引号:不会转义字符串里面的特殊字符,特殊字符会作为本身想表示的意思;

单引号:会转义特殊字符,特殊字符最终只是一个普通字符串数据;

对象、map(属性和值)(键值对)

key:value:在下一行来写对象的属性和值得关系,注意缩进即可。

friends: 
	name: jim
    age: 32

行内写法:

friends: {name: jim. age: 32}

3.配置文件值注入

1.中文乱码解决

SpringBoot学习笔记_第2张图片

2.@value获取值和@ConfigurationProperties获取值比较

@ConfigurationProperties @value
功能 批量注入配置文件中的属性,在类上标明注解即可 只能一个一个的去指定值
松散绑定(松散语法) 支持 不支持
SpEL 不支持 支持
JSR303校验 支持 不支持
复杂类型封装 支持 不支持

配置文件YML还是properties他们都能获取到值;

如果在某一个业务逻辑中需要获取值的话可以用@Value

如果专门有一个JavaBean类来进行映射,最好使用@ConfigurationProperties

3. @PropertySource&@ImportResource

@PropertySource加载指定的配置文件:

@PropertySource(value = {“classpath : ABC.properties”})

@ImportResource导入Spring的配置文件,让配置文件里面的内容生效;

SpringBoot里面没有Spring的配置文件,我们自己编写的配置文件也不能够自动识别;
想让Spring的配置文件生效需要加载进来。

SpringBoot中推荐使用@Bean来给容器中添加组件。

SpringBoot学习笔记_第3张图片

你可能感兴趣的:(SpringBoot)