💗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
多环境配置
- 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;
}
}
}
🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——
点赞
👍收藏
⭐️评论
📝