Spring Boot原理分析 | SpringApplication、Yaml、Properties

这篇具有很好参考价值的文章主要介绍了Spring Boot原理分析 | SpringApplication、Yaml、Properties。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Spring Boot原理分析 | SpringApplication、Yaml、Properties,spring boot,java,spring

💗wei_shuo的个人主页

💫wei_shuo的学习社区

🌐Hello World !


Spring Boot

Spring开源框架,轻量级的Java开发框架,解决企业级应用开发的复杂性而创建,简化开发

  • 基于POJO的轻量级和最小侵入型编程
  • 通过IOC,依赖注入(DI)和面向接口实现松耦合
  • 基于切面(AOP)和惯例进行声明式编程
  • 通过切面和模板减少样式代码

微服务架构

微服务架构是"新常态":构建小型、独立、随时可以运行的应用程序可以为您的代码带来极大的灵活性和更大的弹性;Spring Boot 的许多专用功能使您可以轻松地在生产环境中大规模构建和运行微服务;微服务是一种现代软件方法,其中应用程序代码以小的、可管理的片段交付,独立于其他部分

自动装配

pom.xml

  • spring-boot-dependencies:核心依赖(导入springboot依赖时,不需要指定版本)

启动器

  • spring-boot-starter-……:启动器(自动导入web环境所有依赖)

主程序

  • @SpringBootApplication:标注这个类是springboot应用
  • SpringApplication.run(Springboot01HelloworldApplication.class, args):将springboot应用启动

注解

  • @Target
@Target用来表示注解作用范围,超过这个作用范围,编译的时候就会报错
@Target(ElementType.TYPE)——接口、类、枚举、注解
@Target(ElementType.FIELD)——字段、枚举的常量
@Target(ElementType.METHOD)——方法
@Target(ElementType.PARAMETER)——方法参数
@Target(ElementType.CONSTRUCTOR) ——构造函数
@Target(ElementType.LOCAL_VARIABLE)——局部变量
@Target(ElementType.ANNOTATION_TYPE)——注解
@Target(ElementType.PACKAGE)——包,用于记录java文件的package信息
  • @Retention
@Retention是用来修饰注解的,注解的注解,也称为元注解
source:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;被编译器忽略
class:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期
runtime:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在
  • @Documented

指明修饰的注解,可以被例如javadoc此类的工具文档化,只负责标记,没有成员取值

  • @Inherited

标注一个父类的注解是否可以被子类继承,如果一个注解需要被其子类所继承,则在声明时直接使用@Inherited注解即可;如果没有写此注解,则无法被子类继承

  • @SpringBootConfiguration:springboot的配置
    • @Configuration:spring配置类
    • @Component:spring组件(定义Spring管理Bean,标注@Component注解的类交由spring管理)
  • @EnableAutoConfiguration:自动配置
    • @AutoConfigurationPackage:自动配置包
    • @Import({AutoConfigurationImportSelector.class}):导入选择器

流程:

  • SpringBoot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值
  • 将这些值作为自动配置类导入容器 , 自动配置类就生效 , 进行自动配置工作
  • 整个J2EE的整体解决方案和自动配置都在springboot-autoconfigure的jar包
  • 容器中导入自动配置类 (xxxAutoConfiguration), 给容器中导入场景需要的所有组件 , 并配置组件
  • 有了自动配置类 , 避免手动编写配置注入功能组件的工作

SpringApplication

  • 推断应用的类型是普通的项目还是Web项目
  • 查找并加载所有可用初始化器 , 设置到initializers属性中
  • 找出所有的应用程序监听器,设置到listeners属性中
  • 推断并设置main方法的定义类,找到运行的主类

Yaml语法

YAML是一个可读性高,用来表达数据序列化的格式;YAML参考了其他多种语言,包括:C语言、Python、Perl,并从XML、电子邮件的数据格式(RFC 2822)中获得灵感

SpringBoot使用一个全局的配置文件 , 配置文件名称是固定的

  • application.properties
    • 语法结构 :key=value
  • application.yml
    • 语法结构 :key:空格 value

配置文件的作用 :修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了

  • XML
<server>
    <port>8081<port>
</server>
  • Yaml
server:
  prot: 8080

@ConfigurationProperties作用

  • 将配置文件中配置的每一个属性的值,映射到这个组件中
  • 告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
  • 参数 prefix = “person” : 将配置文件中的person下面的所有属性一一对应

@Component

注册bean

<!-- 导入配置文件处理器,配置文件进行绑定就会有提示,需要重启 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-configuration-processor</artifactId>
  <optional>true</optional>
</dependency>

Yaml和Properties语法

Yaml

  • 配置文件配置和Yaml文件绑定
@ConfigurationProperties(prefix = "person")
  • Yaml文件
Person:
  name: weishuo
  age: 18
  happy: false
  birth: 2002/10/21
  maps: {k1: v1,k2: v2}
  lists:
    - code
    - music
    - girl
  dog:
    name: 旺财
    age: 3

Properties

  • 加载指定的配置文件
@PropertySource(value = "classpath:application.properties")
  • Properties文件
name=weishuo
age=18

Spring Boot原理分析 | SpringApplication、Yaml、Properties,spring boot,java,spring

多环境配置

  • application.yaml
server:
  port: 8080
spring:
  profiles:
    active: dev

---

server:
  port: 8082
spring:
  profiles: dev
  
---

server:
  port: 8083
spring:
  profiles: test

首页图标

  • 将ico图片放在resources目录下的static目录中
  • index.html加入link元素
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
    <link rel="icon" href="1.ico">
</head>
<body>
<h1>首页</h1>
</body>
</html>

Thymeleaf

Thymeleaf是一款流行的Java模板引擎,它提供了一种自然的、HTML标签友好的模板语言,旨在让模板的阅读和编辑更加直观和容易;Thymeleaf可以用于构建Web应用程序,特别是与Spring框架的Spring MVC模块一起使用时,它可以将动态内容渲染到HTML页面中,并处理表单绑定、国际化等常见的Web开发需求

  • HTML标签友好:Thymeleaf使用HTML5兼容的模板语法,模板文件看起来和普通的HTML文件非常相似,易于理解和编辑
  • 支持Spring框架:Thymeleaf与Spring框架无缝集成,支持Spring MVC模块的表单绑定、国际化、安全性等特性
  • 支持静态和动态内容:Thymeleaf可以在HTML文件中包含静态和动态的内容,支持标准的表达式、条件语句、循环语句等常见的编程元素
  • 支持多种模板解析器:Thymeleaf支持多种模板解析器,包括XML、HTML、文本等,满足不同场景下的需求
  • 易于学习和使用:Thymeleaf的语法简单易懂,可以快速上手,而且有详细的官方文档和社区支持

自定义视图解析器

package com.wei.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.Locale;


@Configuration
public class MyMvcConfig implements WebMvcConfigurer {

    //将视图解析器MyViewResolver注入Bean
    @Bean
    public ViewResolver myViewResolver(){
        return new MyViewResolver();
    }

    //自定义视图解析器MyViewResolver
    public static class MyViewResolver implements ViewResolver{
        @Override
        public View resolveViewName(String viewName, Locale locale) throws Exception {
            return null;
        }
    }

}

🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——点赞👍收藏⭐️评论📝


Spring Boot原理分析 | SpringApplication、Yaml、Properties,spring boot,java,spring文章来源地址https://www.toymoban.com/news/detail-518995.html

到了这里,关于Spring Boot原理分析 | SpringApplication、Yaml、Properties的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • spring boot启动原理分析

    springboot启动类中有两个关键的地方 1.@SpringBootApplication 注解 2.SpringApplication.run 方法 SpringBootApplication 注解分析 SpringBootApplication 注解由三大注解构成, SpringBootConfiguration 、 EnableAutoConfiguration 、 ComponentScan 。 SpringBootConfiguration 中其实主要就是包装了Configuration注解 EnableAutoConf

    2024年02月11日
    浏览(31)
  • spring boot 启动报错---java: 无法访问org.springframework.boot.SpringApplication 错误的类文件:

    目录 错误提示信息: 原因: 解决办法: 具体步骤: 主要是因为 spring boot 3.0发布了 ,在创建项目时,默认为3.0 ` 但同时, spring boot 3.0 只支持jdk 17 ,在平时创建时,都喜欢使用jdk8 由于 spring boot 版本默认3.0,同时jdk选择的是 8 ,就会导致这个错误 将 spring boot 版本和jdk统一

    2024年02月15日
    浏览(37)
  • 【Spring Boot基础】解决ERROR org.springframework.boot.SpringApplication -- Application run failed报错问题

    一、问题描述 在学习SpringBoot配置profile的时候,.yml文件内容明明跟老师敲的一模一样,但还是报错ERROR org.springframework.boot.SpringApplication -- Application run failed 原.yml文件内容: 报错如下:  二、解决方法 按照“ERROR org.springframework.boot.SpringApplication -- Application run failed”搜索答案

    2024年02月13日
    浏览(43)
  • Spring Boot原理分析(二):IoC

    IoC(Inversion of Control)是一种软件设计原则,它体现了控制反转的思想。传统的程序设计中,对象之间的依赖关系由开发者在代码中直接管理,即对象自己创建和管理它所依赖的对象。而在IoC的思想下,控制权被反转,对象的创建和管理由容器来负责,对象只需要声明它所依

    2024年02月15日
    浏览(38)
  • Spring Boot源码解读与原理分析

      最近机缘巧合之下,读到了 LinkedBear 编写的《Spring Boot源码解读与原理分析》这本书,本人花了一周的时间认真研读了一下这本书,真的是受益匪浅,特此推荐给大家,好书不容错过啊。 LinkedBear 是一名资深的Java开发工程师,常年致力于底层技术的研究,同时也通过技术

    2024年02月08日
    浏览(37)
  • Spring Boot原理分析(四):声明式事务

    Spring 提供了多种管理事务的方式,包括编程式事务管理和声明式事务管理两种方式。下面分别介绍这两种方式及其实现方式: 编程式事务管理是通过编写代码来手动管理事务。它需要在事务的开始和结束时,通过编程方式来控制事务的提交和回滚。Spring 提供了 PlatformTransa

    2024年02月17日
    浏览(36)
  • 《Spring Boot源码解读与原理分析》书籍推荐

    Spring Boot 1.0.0 早在2014年就已经发布,只不过到了提倡“降本增效”的今天,Spring Boot才引起了越来越多企业的关注。Spring Boot是目前Java EE开发中颇受欢迎的框架之一。依托于底层Spring Framework的基础支撑,以及完善强大的特性设计,Spring Boot已成为业界流行的应用和微服务开发

    2024年02月14日
    浏览(25)
  • Spring Boot Application.properties和yaml配置文件

    全局配置文件能够对一些默认配置值进行修改。Spring Boot使用一个application.properties或者application.yaml的文件作为全局配置文件,该文件存放在src/main/resource目录或者类路径的/config,一般会选择resource目录。 使用Spring Initializr方式创建项目——PropertiesDemo 单击【Next】按钮 添加W

    2024年01月24日
    浏览(59)
  • 在Idea编辑中,解决Spring Boot之.yaml或.properties配置文件不能自动提示的问题,或者配置Spring Boot的.yaml或.properties文件的自动提示

    我们使用 idea 编辑器创建 spring boot 项目,并添加了 .yaml 或 .properties 配置文件后,在配置相关信息时,一般是需要它自动提示,如下图所示: 然而,我在配置 druid 却没有显示,如下如所示: 那么,这是怎么回事呢? 参考网上的教程,使用如下4个步骤分析。 使用 CTRL + ALT

    2024年02月16日
    浏览(39)
  • java: 无法访问org.springframework.boot.SpringApplication 错误的类文件: /C:/Users/xx/.m2/repository/org/spring

    java: 无法访问org.springframework.boot.SpringApplication 错误的类文件: /C:/Users/lvgr8/.m2/repository/org/springframework/boot/spring-boot/3.1.0/spring-boot-3.1.0.jar!/org/springframework/boot/SpringApplication.class 类文件具有错误的版本 61.0, 应为 52.0 请删除该文件或确保该文件位于正确的类路径子目录中。 出现这个

    2024年01月17日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包