ToB企服应用市场:ToB评测及商务社交产业平台

标题: 微服务springboot详细解析(一) [打印本页]

作者: 络腮胡菲菲    时间: 2024-12-5 02:59
标题: 微服务springboot详细解析(一)
目次
1.Spring概述
2.什么是SpringBoot?
3.第一个SpringBoot程序
4.配置参数优先级
5.springboot自动装配原理
6.@SpringBootApplication&SpringApplication.run
7.@ConfigurationProperties(prefix = "")
 8.@Validated数据校验

29、聊聊该如何写一个网站_哔哩哔哩_bilibili
学习门路:【狂神说Java】SpringBoot最新教程IDEA版平常易懂_哔哩哔哩_bilibili

1.Spring概述

Spring是一个开源框架,2003 年兴起的一个轻量级的Java 开发框架
目的:Spring是为了解决企业级应用开发的复杂性而创建的,简化开发
那么Spring是如何简化Java开发的?为了低落Java开发的复杂性,Spring采用了以下4种关键策略:
2.什么是SpringBoot?

学过javaweb的就知道,开发一个web应用,从最初开始接触Servlet结合Tomcat,在前端跑出一个Hello Wolrld程序,是要履历特别多的步调;后来就用了框架Struts,再后来是SpringMVC,到了现在的SpringBoot,过一两年又会有其他web框架出现;什么是SpringBoot呢,就是一个javaweb的开发框架而已,和SpringMVC类似,对比其他javaweb框架的利益,官方说是简化开发,约定大于配置(核心思想,越是简化的东西越是有规定,比如文件夹的上下位置、定名都是有规定的),you can"just run",能迅速的开发web应用,几行代码开发一个http接口即可。
所有的技能框架的发展似乎都遵循了一条主线规律:从一个复杂应用场景衍生一种规范框架,人们只必要进行各种配置而不必要本身去实现它,这时候强大的配置功能成了优点;发展到一定水平之后,人们根据实际生产应用环境,选取此中实勤奋能和设计精华,重构出一些轻量级的框架;之后为了提高开发效率,嫌弃原先的各类配置过于麻烦,于是开始提倡“约定大于配置”,进而衍生出一些一站式的解决方案。
约定大于配置场景:maven、spring、springmvc、springboot、docker...
程序猿的程序 = 数据结构 + 算法(集合框架map、list)
码农的程序 = 面向对象 + 框架
3.第一个SpringBoot程序

看懂pom.xml文件:4、第一个springboot程序_哔哩哔哩_bilibili
在前端发出hello请求
若想要实现热摆设,在创建项目时勾选DevTools即可

4.配置参数优先级


此外,如果你在类似优先级位置同时有application.properties和application.yml,那么application.properties里的属性内里的属性就会覆盖application.yml
微服务 SpringBoot 2.0(二):配置文件解析 - 简书
5.springboot自动装配原理

如果面试的时候问到springboot,谈谈明白,能聊的有自动装配和run()方法,在下面视频10min处7、了解下主启动类怎么运行_哔哩哔哩_bilibili
狂神说SpringBoot02:运行原理初探 - 遇见狂神说 - 博客园
6.@SpringBootApplication&SpringApplication.run

首先我们来看一段启动代码:
  1. @SpringBootApplication
  2. public class DemoApplication {
  3.     public static void main(String[] args) {
  4.         SpringApplication.run(DemoApplication.class, args);
  5.     }
  6. }
复制代码
从上面代码来看,@SpringBootApplication 和 SpringApplication.run长得很相似,但是前者是一个注解,后者是一个SpringApplication类的静态方法,首先我们来看@SpringBootApplication
  1. @Target({ElementType.TYPE})
  2. @Retention(RetentionPolicy.RUNTIME)
  3. @Documented
  4. @Inherited
  5. @SpringBootConfiguration
  6. @EnableAutoConfiguration
  7. @ComponentScan(
  8.     excludeFilters = {@Filter(
  9.     type = FilterType.CUSTOM,
  10.     classes = {TypeExcludeFilter.class}
  11. ), @Filter(
  12.     type = FilterType.CUSTOM,
  13.     classes = {AutoConfigurationExcludeFilter.class}
  14. )}
  15. )
  16. public @interface SpringBootApplication {
  17. ...
  18. }
复制代码
首先我们来分析@SpringBootConfiguration,在此之前我们要知道@Configuration(它与@Bean是一套的,一个是配置类一个是组件),任何一个标注了@Configuration的Java类界说都是一个JavaConfig配置类,凡是经过该注解修饰的,均被实例化到Spring应用程序上下文中,由spring统一管理生命周期,也就是IOC
至于第二部分SpringApplication.run,分析该方法紧张分两部分,一是SpringApplication实例化,二是run方法的执行,请看以下流程图:

最紧张的功能在我看来有两个:
微服务 SpringBoot 2.0(三):启动分析之@SpringBootApplication - 简书
微服务 SpringBoot 2.0(四):启动分析之SpringApplication.run - 简书
7.@ConfigurationProperties(prefix = "")

如下所示在application.yml中给person配置属性
  1. person:
  2.   id: 12345
  3.   name: tianming
  4.   age: 18
复制代码
然后实现实体类与配置类绑定,Person就有值了(大概@Value一个一个绑定)
  1. @Data
  2. @AllArgsConstructor
  3. @NoArgsConstructor
  4. @Component
  5. @ConfigurationProperties(prefix = "person")
  6. public class Person {
  7.     private int id;
  8.     private String name;
  9.     private int age;
  10. }
复制代码
 8.@Validated数据校验

Springboot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。我们这里来写个注解让我们的name只能支持Email格式:
  1. @Component //注册bean
  2. @ConfigurationProperties(prefix = "person")
  3. @Validated  //数据校验
  4. public class Person {
  5.     @Email(message="邮箱格式错误") //name必须是邮箱格式
  6.     private String name;
  7. }
复制代码
常见参数如下所示:
  1. @NotNull(message="名字不能为空")
  2. private String userName;
  3. @Max(value=120,message="年龄最大不能查过120")
  4. private int age;
  5. @Email(message="邮箱格式错误")
  6. private String email;
  7. 空检查
  8. @Null       验证对象是否为null
  9. @NotNull    验证对象是否不为null, 无法查检长度为0的字符串
  10. @NotBlank   检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
  11. @NotEmpty   检查约束元素是否为NULL或者是EMPTY.
  12.    
  13. Booelan检查
  14. @AssertTrue     验证 Boolean 对象是否为 true  
  15. @AssertFalse    验证 Boolean 对象是否为 false  
  16.    
  17. 长度检查
  18. @Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内  
  19. @Length(min=, max=) string is between min and max included.
  20. 日期检查
  21. @Past       验证 Date 和 Calendar 对象是否在当前时间之前  
  22. @Future     验证 Date 和 Calendar 对象是否在当前时间之后  
  23. @Pattern    验证 String 对象是否符合正则表达式的规则
  24. .......等等
  25. 除此以外,我们还可以自定义一些数据校验规则
复制代码
额外保举阅读,总结springboot学习的知识:61、聊聊现在和将来_哔哩哔哩_bilibili

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4